水平合并两张图片(不同大小)?

时间:2019-05-31 22:37:31

标签: numpy opencv

我有2张图片,需要水平组合。我知道numpy和cv2(opencv)应该可以帮助我做到这一点。但是不知道如何。 我使用了img1 = cv2.imread(file1),img2 = cv2.imread(file2) 2张图像的形状分别是(2048、1334、3)和(720、1200、3) 我该怎么办?当我打开这2张图片时,它们具有相似的高度,不同的宽度。 我只知道这2张图片的大小是否相同,然后才可以使用concate,但是我的2张图片的大小是不同的。 对于最终输出,我想让它们保持自己的宽度,高度选择最大/最小... 因此,我想最终输出应该可能是一张图片的2/3宽度,另一张图片的1/3宽度,这是非常好的。我不需要这两个均匀分布。只要保持自己的宽度即可。谢谢!

2 个答案:

答案 0 :(得分:0)

您需要修剪较高图像的底部或添加一些黑色像素。

要修剪图像的一部分,您可以执行以下操作:

trimmed = image2[:image1.shape[0],:,:]

这仅保留从0到image1高度的行。

或者,您可以添加一些黑色像素:

black = np.zeros(image1.shape[0] - image2.shape[0], image1.shape[1])
image2 = np.hstack(image2, black)

然后垂直连接。

答案 1 :(得分:0)

我刚刚解决了我的问题。 基本上使用cv2.resize()功能来调整图像大小 然后只需将它们水平或垂直连接即可。 只需更改轴即可。

img1 = cv2.imread('xxx.png')
img2 = cv2.imread('yyy.jpg')

然后比较img1.shape()img2.shape() 使用resize()函数可以使它们的宽度相同或高度相同。

vis = np.concatenate((img1, img2), axis=1)
cv2.imwrite('out.png', vis)