python-opencv(14):直方图(1)

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()

 结果:

猜你喜欢

转载自blog.csdn.net/Mr_zhuzj/article/details/82224982