编写一段opencv程序,选择一张照片,分别转换成图像整体变亮和图像整体变暗。然后对这三张图片进行直方图处理,并对它们进行直方图均衡化处理,仔细观察均衡化前后的变化。使用matplotlib.pyplot让所有图像都在同一个画布显示
时间: 2024-10-08 19:26:48 浏览: 49
在Python中,我们可以使用OpenCV库读取照片,调整亮度,处理直方图并进行直方图均衡化。以下是实现这个任务的一个简单示例:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 1. 读取图片
img = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE) # 假设是灰度图像,如果是彩色,可以去掉IMREAD_GRAYSCALE
# 2. 图像整体变亮
bright_img = cv2.convertScaleAbs(img, alpha=1.5, beta=0)
# 图像整体变暗
dark_img = cv2.convertScaleAbs(img, alpha=0.8, beta=0)
# 3. 直方图
hist_bright, _ = np.histogram(bright_img.flatten(), bins='auto')
hist_dark, _ = np.histogram(dark_img.flatten(), bins='auto')
# 4. 直方图均衡化
eq_bright = cv2.equalizeHist(bright_img)
eq_dark = cv2.equalizeHist(dark_img)
# 5. 可视化
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(10, 10))
axs[0, 0].imshow(img, cmap='gray')
axs[0, 0].set_title('Original Image')
axs[0, 1].imshow(bright_img, cmap='gray')
axs[0, 1].set_title('Brightened Image')
axs[1, 0].imshow(dark_img, cmap='gray')
axs[1, 0].set_title('Darkened Image')
axs[1, 1].imshow(eq_bright, cmap='gray')
axs[1, 1].set_title('Brightened Image (Equalized)')
axs[1, 1].imshow(eq_dark, cmap='gray')
axs[1, 1].set_title('Darkened Image (Equalized)')
for ax in axs.flat:
ax.axis('off') # 关闭坐标轴
plt.tight_layout()
plt.show()
阅读全文
相关推荐

















