opencv图像处理实战代码 1.计算一幅灰度图像的直方图,并展示可视化效果。 2.计算一幅彩色图像的直方图,观察各个通道的直方图,并进行均衡化处理。 3.分别对彩色图像的三个通道进行自适应均衡化处理,对比原始图像和均衡化图像。
时间: 2025-01-01 12:39:18 浏览: 6
OpenCV是一个强大的计算机视觉库,在图像处理方面有着广泛的应用。以下是使用OpenCV进行上述实战操作的一些Python代码示例:
1. **计算并显示灰度图像直方图**:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 加载图像
img_gray = cv2.imread('gray_image.jpg', 0) # 0表示灰度模式
hist, bins = np.histogram(img_gray.flatten(), 256, [0, 256])
# 创建直方图图形
plt.figure()
plt.plot(bins[:-1], hist, color='r')
plt.xlim([0, 256])
plt.title('Gray Image Histogram')
plt.show()
```
2. **计算彩色图像直方图并均衡化**:
```python
# 加载彩色图像
img_color = cv2.imread('color_image.jpg')
# 分离RGB通道
channels = cv2.split(img_color)
# 计算每个通道的直方图并均衡化
for i, channel in enumerate(channels):
eq_channel = cv2.equalizeHist(channel)
# 绘制原通道和均衡化后的通道直方图
hist, _ = np.histogram(eq_channel.flatten(), 256, [0, 256])
plt.subplot(2, 3, i+1), plt.bar(hist, width=1, align='center')
plt.title(f'Channel {i}: Before (Original) and After (Equalized)')
plt.tight_layout()
plt.show()
```
3. **自适应均衡化**:
```python
# 对每个通道分别应用自适应直方图均衡化
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
eq_channels_adaptive = [clahe.apply(channel) for channel in channels]
# 拼接回彩色图像
eq_img = cv2.merge(eq_channels_adaptive)
cv2.imshow('Adaptive Equalized Image', eq_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文