同时显示 lena.jpg 的原图、 直方图均衡化的图像、原图的灰度直方图和直方图均衡化后的灰度直方图代码
时间: 2024-09-21 19:11:41 浏览: 55
在Python中,我们可以使用OpenCV库来处理图片,包括读取原图、进行直方图均衡化以及展示图像。以下是基本步骤:
首先,你需要安装OpenCV库(可以使用pip install opencv-python),然后按照以下代码操作:
1. **读取lena.jpg原图**:
```python
import cv2
img = cv2.imread('lena.jpg')
```
2. **计算并显示原图**:
```python
cv2.imshow("Original Image", img)
cv2.waitKey(0) # 等待用户按键
cv2.destroyAllWindows()
```
3. **将图像转换为灰度**:
```python
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
4. **计算灰度图像的直方图**:
```python
hist = cv2.calcHist([gray_img], [0], None, [256], [0, 256])
```
注意这里`[0]`表示我们只关心灰度通道,`[256]`是直方图的大小,代表灰度值范围。
5. **绘制并显示原图灰度直方图**:
```python
plt.figure(figsize=(8, 4))
plt.plot(hist)
plt.title('Original Gray Histogram')
plt.xlabel('Gray Level')
plt.ylabel('Frequency')
plt.show()
```
这里使用了matplotlib库来绘制直方图,需要先导入`import matplotlib.pyplot as plt`。
6. **对图像进行直方图均衡化**:
```python
equalized_img = cv2.equalizeHist(gray_img)
```
7. **计算并显示直方图均衡化的图像**:
```python
cv2.imshow("Histogram Equalized Image", equalized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
8. **绘制直方图均衡化的灰度直方图**:
```python
hist_eq = cv2.calcHist([equalized_img], [0], None, [256], [0, 256])
plt.figure()
plt.plot(hist_eq, 'r', label='Equalized Histogram')
plt.legend()
plt.show()
```
以上就是整个流程。如果你运行这个代码,会看到原始图像、直方图均衡化后的图像,以及两个直方图的对比。
阅读全文