生成一个直方图均衡化代码
时间: 2024-04-25 11:02:41 浏览: 18
下面是一个简单的直方图均衡化的 Python 代码,可以参考一下:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
img = cv2.imread('input.jpg', 0)
# 计算直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 计算累积概率分布
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 均衡化处理
img_eq = np.interp(img.flatten(), bins[:-1], cdf_normalized).reshape(img.shape).astype(np.uint8)
# 显示原图和均衡化后的图像
plt.subplot(121), plt.imshow(img, cmap='gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(img_eq, cmap='gray'), plt.title('Equalized Image')
plt.xticks([]), plt.yticks([])
plt.show()
```
其中,`cv2.imread` 函数用来读取图像,`np.histogram` 函数用来计算图像的直方图,`hist.cumsum()` 函数用来计算累积概率分布,`np.interp` 函数用来进行均衡化处理。最后用 `plt.imshow` 函数来显示原图和均衡化后的图像。