Python:使用OpenCV混合两个不同大小的图像

时间:2016-06-22 13:18:37

标签: python image opencv

我试图在扭曲它们之后将两个图像混合在一起。问题是图像大小不一样。我试过这个让混合工作:

#warped_image and image_2 are parameters, warped_image is always larger
output_image = np.copy(warped_image)

topBottom = (warped_image.shape[0] - image_2.shape[0]) // 2
leftRight = (warped_image.shape[1] - image_2.shape[1]) // 2

if warped_image.shape[0] % 2 != 0:
    warped_image = warped_image[0: warped_image.shape[0] - 1, 0: warped_image.shape[1] - 1]


image_2 = cv2.copyMakeBorder(image_2, topBottom, topBottom, leftRight, leftRight, cv2.BORDER_CONSTANT, value=[0,0,0])

while image_2.shape[0] != warped_image.shape[0]:
    image_2 = cv2.copyMakeBorder(image_2, 1, 1, 1, 1, cv2.BORDER_CONSTANT,
                                 value=[0, 0, 0])

cv2.addWeighted(warped_image, .5, image_2, .5, 0.0, output_image)

问题是第一次尝试时混合是不准确的,如果我尝试将已经混合的图像与另一个混合,图像会完全失真。

有没有更好的方法在特定点混合两个图像?

修改结果:

两张图片:

enter image description here

将第三个与前两个混合:

enter image description here

第二张图片实际上太大而无法加载到此处。它的最终尺寸为62521×4111,非常大,因为图像都是3200×2368

0 个答案:

没有答案