
(个人理解,对于RGB图像,每个通道的像素值在0-255之间,共256个值,所以Bin的数目是256。加入图像是14位的,则图像一共有个像素值。故一个Bin的大小是64,所以统计得到的直方图x轴是0-255,y轴是0-64。)
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def plot_demo(image):
# ravel把出现的频次都统计出来,范围是0-256
plt.hist(image.ravel(), 256, [0, 256])
plt.show()
def image_hist(image):
color = ('blue', 'green', 'red')
for i, color in enumerate(color):
hist = cv.calcHist([image], [i], None, [256], [0, 256])
plt.plot(hist, color=color)
plt.xlim([0, 256])
plt.show()
src = cv.imread('C:/Users/Y/Pictures/Saved Pictures/demo.png')
cv.namedWindow('input image', cv.WINDOW_AUTOSIZE)
cv.imshow('input image', src)
image_hist(src)
cv.waitKey(0)
cv.destroyAllWindows()
原图像

plt.hist()绘制的直方图

三通道的直方图


本文介绍了如何使用Python和OpenCV库对RGB图像进行直方图绘制,详细解释了图像像素值分布的统计方法,包括单通道和多通道直方图的绘制过程。
2100

被折叠的 条评论
为什么被折叠?



