当我们需要了解图像中像素值的分布时,直方图是一种非常有用的工具。Python matplotlib是一个非常流行的数据可视化库,可以用来绘制图像的直方图。下面是Python matplotlib绘制灰度和彩色直方图的完整攻略。
准备工作
在使用matplotlib绘制直方图之前,需要先安装matplotlib库。如果你使用的是anaconda或者jupyter notebook,可以使用以下代码安装:
!pip install matplotlib
安装完成后,我们需要导入matplotlib库和其他必要的库:
import matplotlib.pyplot as plt
import cv2
绘制灰度直方图
绘制灰度直方图非常简单,只需要先读取图像,然后调用 plt.hist()
函数即可。
下面是一个绘制灰度直方图的示例代码:
# 读取灰度图像
img_gray = cv2.imread('lena_gray.png', cv2.IMREAD_GRAYSCALE)
# 绘制灰度直方图
plt.hist(img_gray.ravel(), 256, [0, 256])
plt.show()
这段代码中,我们使用 cv2.imread()
函数读取了一张灰度图像,并且将其存储在变量 img_gray
中。然后,调用 plt.hist()
函数绘制灰度直方图。该函数需要输入图像像素值列表、分桶数量以及分桶范围参数。在本例中,我们将其分成256个分桶,并且指定范围为0到256。最后,调用 plt.show()
函数,将图像显示出来。
绘制彩色直方图
与灰度直方图类似,绘制彩色直方图也很简单,只需要读取彩色图像并将其转换为RGB格式即可。
下面是一个绘制彩色直方图的示例代码:
# 读取彩色图像
img_color = cv2.imread('lena_color.png')
# 转换为RGB格式
img_color_rgb = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB)
# 绘制彩色直方图
plt.hist(img_color_rgb.reshape(-1, 3), 256, [0, 256], color = ['red', 'green', 'blue'])
plt.show()
这段代码中,我们使用 cv2.imread()
函数读取了一张彩色图像,并将其存储在变量 img_color
中。然后,调用 cv2.cvtColor()
函数将其转换为RGB格式,存储在变量 img_color_rgb
中。最后,调用 plt.hist()
函数绘制彩色直方图。该函数需要输入图像像素值列表、分桶数量以及分桶范围参数,但是由于我们使用的是彩色图像,像素值是由RGB三通道像素值组成的,因此我们需要将其 reshape 成一个三列的矩阵,然后用不同的颜色表示不同的通道。最后,调用 plt.show()
函数,将图像显示出来。
总结
本文介绍了如何使用Python matplotlib绘制灰度和彩色图像的直方图。具体来说,我们展示了如何使用 plt.hist()
函数绘制直方图,并给出了两个示例:一个是灰度直方图,另一个是彩色直方图。我们希望这个攻略对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python matplotlib绘制灰度和彩色直方图 - Python技术站