图像融合后亮度不发生变化的代码
时间: 2023-08-14 14:08:23 浏览: 38
实现图像融合后亮度不发生变化的代码可以通过以下步骤实现:
1. 将两个图像进行融合,可以使用OpenCV库中的addWeighted函数实现,如下所示:
```
blended_image = cv2.addWeighted(image1, alpha, image2, beta, gamma)
```
其中,image1和image2分别表示要融合的两个图像,alpha和beta表示两个图像的权重系数,gamma表示亮度调整参数。
2. 计算融合后图像的平均亮度值,可以使用OpenCV库中的cv2.mean函数实现,如下所示:
```
mean_value = cv2.mean(blended_image)
```
3. 计算两个图像的平均亮度值的差值,如下所示:
```
delta_mean = abs(cv2.mean(image1) - cv2.mean(image2))
```
4. 将差值分配到gamma参数中,如下所示:
```
gamma = delta_mean
```
这样可以保证融合后图像的亮度与原始图像的亮度一致。
完整代码如下:
```
import cv2
# 加载两个图像
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')
# 融合两个图像
alpha = 0.5
beta = 0.5
gamma = 0
blended_image = cv2.addWeighted(image1, alpha, image2, beta, gamma)
# 计算融合后图像的平均亮度值
mean_value = cv2.mean(blended_image)
# 计算两个图像的平均亮度值的差值
delta_mean = abs(cv2.mean(image1) - cv2.mean(image2))
# 将差值分配到gamma参数中
gamma = delta_mean
# 再次融合两个图像
blended_image = cv2.addWeighted(image1, alpha, image2, beta, gamma)
# 显示融合后的图像
cv2.imshow('Blended Image', blended_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```