1.掩膜直方图
首先生成掩膜图像:
mask=np.zeros(images.shape,np.uint8)
mask[200:400,200:400]=255
dst=cv2bitwise_and(img,mask)
程序示例:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("lena.bmp",cv2.IMREAD_UNCHANGED)
m=np.zeros(img.shape,np.uint8)
m[200:400,200:400]=255
hist0=cv2.calcHist([img],[0],m,[256],[0,255])
hist1=cv2.calcHist([img],[0],None,[256],[0,255])
plt.plot(hist0,color='r')
plt.plot(hist1,color='b')
plt.show()
结果:
2. 直方图均衡化
语法:
dst=cv2.equalizeHist(src)
程序示例:
import numpy as np
import matplotlib.pyplot as plt
import cv2
img=cv2.imread("boat.bmp",cv2.IMREAD_UNCHANGED)
result=cv2.equalizeHist(img)
hist0=cv2.calcHist([img],[0],None,[256],[0,255])
hist1=cv2.calcHist([result],[0],None,[256],[0,255])
cv2.imshow("original",img)
cv2.imshow("result",result)
plt.plot(hist0,color='r')
plt.plot(hist1,color='b')
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
结果:
3.subplot函数使用
plt.subplot(nrows,ncols,plot_number)
plot_number:当前窗口序号
程序示例:
import numpy as np
import matplotlib.pyplot as plt
import cv2
img=cv2.imread("boat.bmp",cv2.IMREAD_UNCHANGED)
result=cv2.equalizeHist(img)
hist0=cv2.calcHist([img],[0],None,[256],[0,255])
hist1=cv2.calcHist([result],[0],None,[256],[0,255])
plt.subplot(1,2,1),plt.plot(hist0,color='r')
plt.subplot(1,2,2),plt.plot(hist1,color='b')
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
结果:
4.matplotlib.pyplot.imshow
(1)imshow显示灰度图
import numpy as np
import matplotlib.pyplot as plt
import cv2
img=cv2.imread("1.png",cv2.IMREAD_UNCHANGED)
result=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#错误示例
plt.subplot(2,2,1)
plt.imshow(img),plt.axis('off')
plt.subplot(2,2,2)
plt.imshow(img,cmap=plt.cm.gray),plt.axis('off')
plt.subplot(2,2,3)
plt.imshow(result),plt.axis('off')
#正确示例
plt.subplot(2,2,4)
plt.imshow(result,cmap=plt.cm.gray),plt.axis('off')
plt.show()
结果:
(2)显示彩色图像
import numpy as np
import matplotlib.pyplot as plt
import cv2
img=cv2.imread("1.png",cv2.IMREAD_UNCHANGED)
b,g,r=cv2.split(img)
img2=cv2.merge([r,g,b])
plt.subplot(1,2,1)
plt.imshow(img),plt.axis('off')
plt.subplot(1,2,2)
plt.imshow(img2),plt.axis('off')
plt.show()
结果:
5.复习代码
import numpy as np
import matplotlib.pyplot as plt
import cv2
img=cv2.imread("boat.bmp",cv2.IMREAD_UNCHANGED)
equ=cv2.equalizeHist(img)
plt.subplot(2,2,1),plt.imshow(img,cmap=plt.cm.gray),plt.axis('off')
plt.subplot(2,2,2),plt.imshow(equ,cmap=plt.cm.gray),plt.axis('off')
hist0=cv2.calcHist([img],[0],None,[256],[0,255])
hist1=cv2.calcHist([equ],[0],None,[256],[0,255])
plt.subplot(2,2,3),plt.plot(hist0,color='r')
plt.subplot(2,2,4),plt.plot(hist1,color='r')
plt.show()