代码语言:javascript复制
import cv2
import matplotlib.pyplot as plt
o=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
cv2.imshow("original",o)
histb=cv2.calcHist([o],[0],None,[256],[0,255])#绘制B分量直方图
histg=cv2.calcHist([o],[1],None,[256],[0,255])#绘制G分量直方图
histr=cv2.calcHist([o],[2],None,[256],[0,255])#绘制R分量直方图
plt.plot(histb,color='b')
plt.plot(histg,color='g')
plt.plot(histr,color='r')
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
算法:颜色直方图是在许多图像检索系统中被广泛采用的颜色特征。它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。颜色直方图特别适于描述那些难以进行自动分割的图像。
hist=cv2.calcHist(images, channels, mask, histSize, ranges, accumulate)
- images表示输入图像
- channels表示指定通道编号,如果输入图像是灰度图像,该参数的值是[0]。如果输入图像是彩色图像,该参数的值是[0]、[1]、[2],分别对应通道B、G、R
- mask表示掩码
- histSize表示BINS的值
- ranges表示像素值范围
- accumulate表示累计(累积、叠加)标识。其默认值是False。如果设为True,则直方图在开始计算时不会被清零,计算的是多个直方图的累积结果,用于对一组图像计算直方图,可选参数