如何设置合理的偏移量去实现图像拼接,获取中点,从而防止图片被删截,代码
时间: 2023-06-17 14:05:58 浏览: 67
实现图像拼接的关键在于确定每张图片的位置和大小,可以通过计算每张图片的中心点坐标和宽高来实现。以下是一个示例代码,假设有两张图片 `img1` 和 `img2`:
```python
import cv2
import numpy as np
# 读取图片
img1 = cv2.imread('img1.jpg')
img2 = cv2.imread('img2.jpg')
# 计算图片大小和中心点坐标
h1, w1 = img1.shape[:2]
h2, w2 = img2.shape[:2]
center1 = (w1 // 2, h1 // 2)
center2 = (w2 // 2, h2 // 2)
# 计算拼接后图片的大小和中心点坐标
h_new = max(h1, h2)
w_new = w1 + w2
center_new = (w_new // 2, h_new // 2)
# 计算偏移量
x_offset1 = center_new[0] - center1[0]
y_offset1 = center_new[1] - center1[1]
x_offset2 = center_new[0] - center2[0] - w1
y_offset2 = center_new[1] - center2[1]
# 创建空白画布
canvas = np.zeros((h_new, w_new, 3), dtype=np.uint8)
# 在空白画布上拼接图像
canvas[y_offset1:y_offset1+h1, x_offset1:x_offset1+w1] = img1
canvas[y_offset2:y_offset2+h2, x_offset2:x_offset2+w2] = img2
# 显示拼接后的图像
cv2.imshow('result', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先读取了两张图片 `img1` 和 `img2`,然后分别计算了它们的大小和中心点坐标。接着,我们计算了拼接后图片的大小和中心点坐标,然后根据这些信息计算了每张图片的偏移量。最后,我们创建了一个空白画布 `canvas`,然后在它上面拼接了两张图片,得到了拼接后的结果。
注意,在计算偏移量时,我们使用了中心点坐标和拼接后图片的中心点坐标之间的差值来计算。这样可以确保每张图片都被正确地放置在了拼接后的画布上,从而防止出现删截现象。