1.绘制直方图
import numpy as np
import matplotlib.pyplot as plt
import cv2
img=cv2.imread("boat.bmp",cv2.IMREAD_UNCHANGED)
cv2.imshow("original",img)
plt.hist(img.ravel(),256,[0,255])
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
结果:
2.用opencv统计直方图信息
hist=cv2.calcHist(images,channels,mask,histSize,ranges,accumulate)
hist:直方图
images:原始图像
channels:指定通道
mask:掩码图像
histSize:BINS的数量
ranges:像素值范围
扫描二维码关注公众号,回复:
5498185 查看本文章
accumulate:累计标识
程序示例:
import numpy as np
import matplotlib.pyplot as plt
import cv2
img=cv2.imread("1.png",cv2.IMREAD_UNCHANGED)
hist=cv2.calcHist([img],[0],None,[256],[0,255])
print(hist)
结果(部分):
3.绘制opencv统计直方图
使用matplotlib.pyplot
一个简单的例子:
import numpy as np
import matplotlib.pyplot as plt
y=[0.3,0.4,2,5,3,4.5,4]
plt.plot(y,color='r')
plt.show()
结果:
将cv2.calcHist和plt.plot结合起来使用
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("lena.bmp")
hist=cv2.calcHist([img],[0],None,[256],[0,256])
plt.plot(hist,color='r')
plt.show()
结果:
如果绘制三通道的RGB图:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("1.png")
histb=cv2.calcHist([img],[0],None,[256],[0,256])
histg=cv2.calcHist([img],[1],None,[256],[0,256])
histr=cv2.calcHist([img],[2],None,[256],[0,256])
plt.plot(histb,color='b')
plt.plot(histg,color='g')
plt.plot(histr,color='r')
plt.show()
结果: