cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:214: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and type), nor 'array op scalar', nor 'scalar op array' in function 'cv::binary_op'
时间: 2023-11-03 10:03:40 浏览: 193
这个错误提示是由于 Opencv 库在执行图像处理操作时,要求输入的两个图像的大小和类型必须匹配。如果出现了这个错误,有可能是因为输入的两个图像的大小或类型不一样,或者是输入的其中一个参数并不是一个有效的图像。
要解决这个错误,你可以检查一下输入的两个图像的大小和类型是否匹配,也可以尝试对其中一个参数进行调整,使其与另一个参数的大小和类型匹配。如果你需要对图像进行缩放或裁剪等操作,可以使用 Opencv 提供的相关函数来实现。另外,也可以检查一下输入的参数是否正确,特别是在使用指针传递参数的情况下,需要确保指针指向的内存地址是有效的并且大小正确。
相关问题
Traceback (most recent call last): File "D:\桌面\图像处理\实验一.py", line 15, in <module> mask_inv = cv2.bitwise_and(mask) cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'bitwise_and' > Overload resolution failed: > - bitwise_and() missing required argument 'src2' (pos 2) > - bitwise_and() missing required argument 'src2' (pos 2)
这个错误是由于 `cv2.bitwise_and()` 函数调用时缺少了第二个参数 `src2` 导致的。`cv2.bitwise_and()` 函数用于执行按位与操作,需要两个输入图像作为参数。
你可以将 `cv2.bitwise_and()` 的调用修改为如下形式:
```python
mask_inv = cv2.bitwise_and(src1, src2)
```
其中 `src1` 和 `src2` 分别为两个输入图像,你需要根据具体的应用场景来选择合适的图像作为输入。确保这两个图像的尺寸相同,或者可以使用 `cv2.resize()` 函数进行调整。
请根据你的需求,将合适的图像作为 `src1` 和 `src2` 参数传递给 `cv2.bitwise_and()` 函数,以解决这个问题。
--------------------------------------------------------------------------- error 显示这种错误 Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_20772\3885235503.py in <module> 24 25 ---> 26 (faces, ids) = samples_and_labels() 27 print(faces, ids) 28 print("Training...") ~\AppData\Local\Temp\ipykernel_20772\3885235503.py in samples_and_labels() 11 path = "../03_DataSet/01_Grocery/image" + str(i) + ".jpg" 12 img = cv2.imread(path) ---> 13 imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 14 faces = face_xml.detectMultiScale(imgGray) 15 error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
这个错误可能是因为你读取的图像文件不存在或者路径不正确导致的。可以检查一下你的代码中的图像路径是否正确,并且确保图像文件存在。如果图像文件存在,可以检查一下图像是否被正确读取,可以使用cv2.imshow()函数来显示图像。如果图像显示为空,那么可能是因为图像文件格式不正确或者图像文件损坏导致的。
另外,你在代码中使用了cv2.cvtColor()函数将图像从BGR格式转换为灰度格式,也有可能是出现问题的原因。你可以检查一下图像是否为空,如果为空,那么就无法进行颜色空间的转换。可以使用以下代码对图像进行检查:
```
import cv2
img = cv2.imread('image.jpg')
if img is None:
print("Failed to load image file!")
else:
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
if imgGray is None:
print("Failed to convert image to grayscale!")
else:
cv2.imshow("gray", imgGray)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
如果你仍然无法解决问题,可以提供更多的代码和错误信息以便更好地帮助你解决问题。
阅读全文