【发布时间】:2021-08-23 13:30:23
【问题描述】:
我使用下面的代码通过 2 种方法生成彩色图像的直方图:
方法一:-
- 使用 cv2.calcHist() 函数计算频率
- 使用 plt.plot() 生成频率的线图
方法二:-
- 使用 plt.hist() 函数计算并生成直方图(我添加了 bin=250 以便 2 个直方图一致)
观察:两个直方图大致相似。第一个直方图(使用 plt.plot)看起来很平滑。然而,第二个直方图(使用 plt.hist)有额外的尖峰和下降。
问题:由于图像只有 int 值,因此不应出现不一致的分箱。 histogram-2 中这些额外的峰值和下降的原因是什么?
blue_bricks = cv2.imread('Computer-Vision-with-Python/DATA/bricks.jpg')
fig = plt.figure(figsize=(17,10))
color = ['b','g','r']
# Histogram Type-1
fig.add_subplot(2,2,1)
for i,c in enumerate(color):
hist = cv2.calcHist([blue_bricks], mask=None, channels=[i], histSize=[256], ranges=[0,256])
plt.plot(hist,color=c)
plt.title('Histogram-1')
# Histogram Type-2
fig.add_subplot(2,2,2)
for i,c in enumerate(color):
plt.hist(blue_bricks[:,:,i].flatten(),color=c, alpha=0.5, bins=250)
plt.title('Histogram-2')
【问题讨论】:
标签: python-3.x opencv matplotlib computer-vision opencv-python