cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'filter2D' > Overload resolution failed: > - src data type = 17 is not supported > - Expected Ptr<cv::UMat> for argument 'src'
时间: 2023-08-28 08:46:50 浏览: 182
这个错误通常是由于输入的图像类型不受支持而导致的。具体来说,这个错误通常发生在使用OpenCV的filter2D函数时。filter2D函数用于对图像进行卷积操作,但是如果输入的图像类型不受支持,则会出现上述错误。
要解决这个问题,你可以尝试将输入图像的类型转换为受支持的类型。例如,如果你的输入图像是8位无符号整数类型(即CV_8U),则可以尝试将其转换为32位浮点类型(即CV_32F)。你可以使用cv2.convertScaleAbs()函数进行类型转换。
另外,你还可以检查一下filter2D函数的其他参数是否正确设置。例如,确保卷积核的大小和类型与输入图像匹配。
如果仍然无法解决问题,请提供更多的代码和错误信息,以便我们更好地帮助你解决问题。
相关问题
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'cvtColor' > Overload resolution failed: > - src is not a numpy array, neither a scalar > - Expected Ptr<cv::UMat> for argument 'src'
这个错误的意思是cv2.cvtColor函数的第一个参数不是numpy数组或标量,也不是cv::UMat指针。请检查你传递给这个函数的图像是否正确,它应该是一个numpy数组或cv::UMat指针。你可以尝试使用以下代码将图像转换为numpy数组:
```
image = np.array(image)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
```
如果仍然出现错误,请检查图像是否已正确加载并传递给该函数。
cv2.polylines(img, lines, (0,0,255), 3) cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'polylines' > Overload resolution failed: > - Argument 'isClosed' is not convertable to bool > - Argument 'isClosed' is not convertable to bool报错了
这个错误提示是因为 `cv2.polylines()` 函数的第三个参数 `isClosed` 需要传入一个布尔值类型,但是你传入了一个元组 `(0,0,255)`。你需要修改代码,将 `(0,0,255)` 改为 `True` 或者 `False`,表示线条是否需要闭合。例如,如果你想要闭合线条,可以这样写:
```
cv2.polylines(img, lines, True, (0,0,255), 3)
```
如果你不想要闭合线条,可以这样写:
```
cv2.polylines(img, lines, False, (0,0,255), 3)
```
这样就可以避免这个错误了。
阅读全文