Python PIL Image.histogram()函数详解
PIL(Python Imaging Library)是一个Python的第三方图像处理库,可以进行图像的读取、处理、存储等操作。其中,Image.histogram()
函数是PIL库中一个用来获取图像直方图数据的函数。
1. 语法
该函数语法如下:
PIL.Image.Image.histogram(self, mask=None, histSize=None, ranges=None)
参数解析:
mask
: 可选参数,若指定,则仅返回遮罩范围内的直方图数据。histSize
: 可选参数,指定直方图的宽度。ranges
: 可选参数,指定直方图数据的范围。
2. 返回值
返回一个元组(或列表),表示图像各通道直方图的数据。
对于二值化、灰度图像,则返回一个包含256个元素的列表,表示灰度值为0~255时,图像中对应的像素点的数量。
对于彩色图像,则返回一个长度为3的元组(或列表),表示各个颜色通道(R、G、B)的直方图数据。
3. 实例说明
3.1 读取灰度图像并绘制直方图
本例中,我们读取一张灰度图像,并用Matplotlib绘制其直方图:
from PIL import Image
import matplotlib.pyplot as plt
# 加载灰度图像
im = Image.open('lena.png').convert('L')
# 获取直方图数据
hist = im.histogram()
# 绘制直方图
plt.plot(hist)
plt.show()
上述代码中,我们首先使用Image.open()
方法打开一个图像文件,然后将其转换为灰度图像。接着,调用im.histogram()
获取图像的灰度直方图数据,并使用matplotlib
库中的plot()
方法绘制直方图。
3.2 读取彩色图像并分别绘制各色道直方图
本例中,我们读取一张彩色图像,并分别绘制其红、绿、蓝三个通道的直方图:
from PIL import Image
import matplotlib.pyplot as plt
# 加载彩色图像
im = Image.open('lena.png')
# 获取各通道直方图数据
hist_r = im.histogram()[:256]
hist_g = im.histogram()[256:512]
hist_b = im.histogram()[512:]
# 绘制各通道直方图
plt.plot(hist_r, color='r', label='R')
plt.plot(hist_g, color='g', label='G')
plt.plot(hist_b, color='b', label='B')
plt.legend()
plt.show()
上述代码中,我们首先使用Image.open()
方法打开一个图像文件,然后调用im.histogram()
获取图像的各颜色通道直方图数据,分别存储在hist_r
、hist_g
、hist_b
三个列表中。最后,使用matplotlib
库中的plot()
方法绘制各颜色通道的直方图,并使用legend()
方法添加图例。