写一个图像融合详细代码
时间: 2023-10-10 22:08:42 浏览: 56
好的,以下是一个基于OpenCV的图像融合的详细代码:
```python
import cv2
import numpy as np
# 读取原始图像
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
# 将图像缩放至相同大小
img1 = cv2.resize(img1, (img2.shape[1], img2.shape[0]))
# 生成掩膜
mask = np.zeros(img2.shape[:2], dtype=np.uint8)
mask[100:500, 200:600] = 255
# 进行图像融合
dst = cv2.seamlessClone(img2, img1, mask, (300, 300), cv2.NORMAL_CLONE)
# 显示结果
cv2.imshow('result', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
解释一下代码的每一步:
1. 首先,我们使用OpenCV读取两张原始图像:`img1`和`img2`。
2. 为了进行图像融合,我们需要将两张图像缩放至相同的大小,这里我们将`img1`缩放至与`img2`相同的大小。
3. 我们生成一个掩膜,用于指定哪些区域来自`img2`,哪些区域来自`img1`。在这个例子中,我们创建了一个矩形掩膜,指定了`img2`的一部分区域,其余为0。
4. 我们使用`cv2.seamlessClone()`函数将`img2`融合到`img1`中。该函数需要四个参数:源图像、目标图像、掩膜和目标图像中的中心点。这里我们使用了`NORMAL_CLONE`模式,表示用源图像的像素替换目标图像的像素。
5. 最后,我们显示结果图像并等待用户按下任意键关闭窗口。
这就是一个简单的基于OpenCV的图像融合代码。当然,具体的融合效果取决于你的掩膜和参数设置,你可以根据需要进行调整。