异常解读
在使用 OpenCV 进行代码编写时,会出现 ValueError: all the input arrays must have same number of dimensions 错误。
该错误为值错误,例如下述代码就会报错。
import cv2 as cv
import numpy as np
# 读取灰度图
image1 = cv.imread("11.jpg", 0)
# 读取彩色图
image2 = cv.imread("11.jpg")
# 出错位置
image = np.hstack((image1, image2))
cv.imshow("img", image)
cv.waitKey()
该 BUG 出现的原因是因为【图片维度不同】,影响的函数有 np.hstack((m1,m2)),np.column_stack((m1,m2)),np.concatenate([m1, m2])
异常解决方案
修改图片维度即可,排查图片维度不同出现的位置,调整即可。
具体代码不同,大家自行调整。
附录
本系列文章只供记录 Python 日常开发过程中 偶遇 BUG,提供给学生作为参考数据与解决方案用,属于记录型博客,有缘分看到的读者希望可解决你的问题。
错误提示样板,可以与你的错误进行比对。
Traceback (most recent call last):
File "e:/crawl100/opencv_ppt/error.py", line 10, in <module>
image = np.hstack((image1, image2)).toarray()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\core\shape_base.py", line 340, in hstack
return _nx.concatenate(arrs, 1)
ValueError: all the input arrays must have same number of dimensions
补充其他解决方案
all the input arrays must have same number of dimensions 这个错误信息是提示 所有输入的数组的维度应该是相同的。
在使用 OpenCV 的函数时,我们需要确保所有输入的图像或数组具有相同的维度。
如果你确信数组维度是相同的,还可以检查一下数组类型是否是一致的,有时候这个错误信息也可能是因为数组类型不一致所导致的。
其他可能情况
在 OpenCV 中,图像或数组通常由多维数组表示,例如二维数组表示单通道图像,三维数组表示三通道图像。如果在调用 OpenCV 函数时使用了具有不同维度的图像或数组,则可能会出现此错误。
如果要纠正这个错误,可以尝试检查代码中所有输入数组的维度,并确保它们相同。如果你正在使用一个三维数组(三通道图像),则应该使用具有相同维度的三维数组作为函数的其他输入参数。