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

Numpy 水平合并两张图片(不同大小)?,numpy,opencv,Numpy,Opencv,我有两张图片,需要横向组合。我知道numpy和cv2(opencv)应该帮助我做到这一点。但我不知道怎么做。 我使用了img1=cv2.imread(文件1),img2=cv2.imread(文件2) 这两幅图像的形状分别是(20481334,3)和(7201200,3) 我怎么能这样做?当我打开这两张图片时,它们的高度相似,宽度不同。 我只知道如果两张图片大小相同,那么就使用concate,但我的两张图片大小不同。 对于最终输出,我希望它们保持自己的宽度、高度选择最大/最小。。。 所以我想最终

我有两张图片,需要横向组合。我知道numpy和cv2(opencv)应该帮助我做到这一点。但我不知道怎么做。 我使用了img1=cv2.imread(文件1),img2=cv2.imread(文件2) 这两幅图像的形状分别是(20481334,3)和(7201200,3) 我怎么能这样做?当我打开这两张图片时,它们的高度相似,宽度不同。 我只知道如果两张图片大小相同,那么就使用concate,但我的两张图片大小不同。 对于最终输出,我希望它们保持自己的宽度、高度选择最大/最小。。。
所以我想最终的输出应该是一张图片的2/3宽度,另一张图片的1/3宽度,这是非常好的。我不需要这两个是均匀分布的。保持自己的宽度。谢谢

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

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

trimmed = image2[:image1.shape[0],:,:]
这只保留从0到
image1
高度的行

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

black = np.zeros(image1.shape[0] - image2.shape[0], image1.shape[1])
image2 = np.hstack(image2, black)
然后垂直连接。

我刚刚解决了我的问题。 基本上使用
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)