python中调用np.hstack对两张图片进行水平拼接时提示:“ValueError: all the input array dimensions except for the concatenation axis must match exactly” 代码:
import numpy as np
import cv2
imgname1 = '1.jpg'
imgname2 = '2.jpg'
img1 = cv2.imread(imgname1)
img2 = cv2.imread(imgname2)
hmerge = np.hstack((img1 , img2)) #水平拼接
cv2.imshow("merge", hmerge) #拼接显示为merge
cv2.waitKey(0)
cv2.destroyAllWindows()
此时python会报错:
Traceback (most recent call last):
File "D:/xxxx/xxxx.py", line xx, in <module>
hmerge = np.hstack((gray1, gray2)) #水平拼接
File "D:\xxxx\venv\lib\site-packages\numpy\core\shape_base.py", line 280, in hstack
return _nx.concatenate(arrs, 1)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
这是因为拼接的两个图片的大小不一致,在使用numpy中的hstack()函数时,必须使所有输入数组具有相同的维数(数量和尺寸)才能进行拼接合并,否则就会提示上述错误。
解决方法:
1、利用opencv的其他方法,这里给出一些参考文档,不够都是使用C++或其他语言实现的,还没有找到python实现。
参考1:https://blog.youkuaiyun.com/u014581740/article/details/54983674(利用opencv将两张图像在同一窗口上显示,并在图片上显示文字)
参考2:opencv2 一个窗口显示多幅图片_cv2显示多张图片-优快云博客(opencv2 一个窗口显示多幅图片)

在Python中使用np.hstack进行图片拼接时,如果图片大小不一致会导致错误"ValueError: all the input array dimensions except for the concatenation axis must match exactly"。解决方法包括使用matplotlib进行图片展示,它允许不同大小和颜色通道的图片排列在同一个窗口,无需关注尺寸。通过subplot调整图片位置,并使用imshow显示。可以设置子图间距、去除坐标轴、调整清晰度以优化显示效果。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



