我有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宽度,这是非常好的。我不需要这两个均匀分布。只要保持自己的宽度即可。谢谢!
答案 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)