python亮度直方图
时间: 2025-01-06 15:42:12 浏览: 17
### 使用Python生成图像亮度直方图
为了生成图像的亮度直方图,可以利用OpenCV库中的`cv2.calcHist()`函数。此方法能够计算并返回给定图像的直方图数据[^5]。
下面是一段完整的代码示例,展示了如何加载一幅彩色图片,并将其转换成灰度模式以便于分析亮度分布情况;接着调用上述提到的方法获取该灰度化后的图像对应的亮度频率统计信息;最后借助Matplotlib库将这些统计数据可视化出来形成直观易懂的图表形式[^2]。
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 加载原始RGB色彩空间下的测试样本照片
image_path = 'path_to_your_image_file'
original_img = cv2.imread(image_path)
# 转换成灰阶版本方便后续操作
grayscale_img = cv2.cvtColor(original_img, cv2.COLOR_BGR2GRAY)
# 执行直方图运算得到各亮度级别的像素数量占比情况
brightness_histogram = cv2.calcHist([grayscale_img], [0], None, [256], [0, 256])
# 展现原图及其对应亮度频次曲线图
plt.subplot(121), plt.imshow(cv2.cvtColor(grayscale_img, cv2.COLOR_GRAY2BGR))
plt.title('Grayscale Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.plot(brightness_histogram, color='black')
plt.xlim([0, 256])
plt.title('Brightness Histogram of Grayscale Image')
plt.show()
```
这段程序首先定义了一个路径变量指向待处理的目标文件位置,之后依次执行了读入、颜色空间转变以及直方图构建三个主要步骤。最终通过matplotlib绘制成两部分子图的形式展示出来——左侧为经过预处理后的单通道灰度影像本身,右侧则是基于它所提取出来的亮度等级出现次数折线图形表示法[^4]。
阅读全文