编写一个python程序,要求如下 1. 读入给定灰度图像并显示出来 ;2. 统计其归一化的直方图,并用柱状图的形式显示出来 ;3. 显示均衡化后的图像; 4. 统计均衡化后的直方图,并用柱状图的形式显示出来
时间: 2024-03-10 11:50:03 浏览: 82
OpenCV利用python来实现图像的直方图均衡化
好的,以下是 Python 代码实现:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读入灰度图像
img = cv2.imread('image.jpg', 0)
# 显示原始图像
plt.subplot(2, 2, 1)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
# 统计归一化的直方图并显示
plt.subplot(2, 2, 2)
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
plt.plot(hist, color='gray')
plt.xlim([0, 256])
plt.ylim([0, np.max(hist) * 1.1])
plt.title('Normalized Histogram')
# 进行直方图均衡化
equ = cv2.equalizeHist(img)
# 显示均衡化后的图像
plt.subplot(2, 2, 3)
plt.imshow(equ, cmap='gray')
plt.title('Equalized Image')
# 统计均衡化后的直方图并显示
plt.subplot(2, 2, 4)
hist, bins = np.histogram(equ.flatten(), 256, [0, 256])
plt.plot(hist, color='gray')
plt.xlim([0, 256])
plt.ylim([0, np.max(hist) * 1.1])
plt.title('Equalized Histogram')
plt.show()
```
注意,在运行代码之前,需要将 `image.jpg` 替换成你自己的灰度图像文件名。
阅读全文