2.显示一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。
时间: 2023-05-21 14:02:24 浏览: 189
ChatGPT: 您可以使用以下代码来显示灰度图像a并改变亮度以获得图像b:
```python
import cv2
import numpy as np
# 读取灰度图像a
img_a = cv2.imread('a.jpg', cv2.IMREAD_GRAYSCALE)
# 改变亮度得到图像b
alpha = 0.5 # 亮度调整参数
beta = -50 # 亮度调整参数
img_b = np.clip(alpha * img_a + beta, 0, 255).astype(np.uint8)
# 显示两幅图像的直方图
hist_a = cv2.calcHist([img_a], [0], None, [256], [0, 256])
hist_b = cv2.calcHist([img_b], [0], None, [256], [0, 256])
hist_w = 512
hist_h = 400
bin_w = int(round(hist_w / 256))
hist_img = np.zeros((hist_h, hist_w, 3), dtype=np.uint8)
cv2.normalize(hist_a, hist_a, 0, hist_h, cv2.NORM_MINMAX)
cv2.normalize(hist_b, hist_b, 0, hist_h, cv2.NORM_MINMAX)
for i in range(1, 256):
cv2.line(hist_img, (bin_w * (i - 1), hist_h - int(round(hist_a[i - 1][0]))),
(bin_w * i, hist_h - int(round(hist_a[i][0]))), (255, 0, 0), thickness=2)
cv2.line(hist_img, (bin_w * (i - 1), hist_h - int(round(hist_b[i - 1][0]))),
(bin_w * i, hist_h - int(round(hist_b[i][0]))), (0, 0, 255), thickness=2)
cv2.imshow('img_a', img_a)
cv2.imshow('img_b', img_b)
cv2.imshow('hist', hist_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请注意,这只是一个示例代码,您需要根据您的实际情况进行修改。