对图片进行直方图均衡化处理opencv代码
时间: 2024-09-28 08:17:30 浏览: 54
在OpenCV中,直方图均衡化是一种常用的技术,用于增强图像对比度,使得暗部细节和亮部细节更易识别。以下是一个简单的Python代码示例,展示如何对一张图片进行直方图均衡化处理:
```python
import cv2
import numpy as np
# 读取图片
image = cv2.imread('path_to_your_image.jpg', 0) # 0表示灰度模式
# 计算原图的直方图
hist, _ = np.histogram(image.flatten(), 256, [0, 256])
# 找到累计分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 使用线性插值计算新的像素值
equ = np.interp(image.flatten(), np.arange(256), cdf_normalized).reshape(image.shape)
# 应用结果到原图
equ = cv2.convertScaleAbs(equ)
# 显示原始图像和直方图均衡化的图像
cv2.imshow("Original Image", image)
cv2.imshow("Equalized Image", equ)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个例子首先读取图片并转换成灰度图像,然后计算直方图,并生成累积分布函数(CDF)。接着通过插值将每个像素映射到新的亮度级别,最后将处理后的图像显示出来。
阅读全文