cv2.imshow('img', img) cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'imshow' > Overload resolution failed: > - mat is not a numpy array, neither a scalar > - Expected Ptr<cv::cuda::GpuMat> for argument 'mat' > - Expected Ptr<cv::UMat> for argument 'mat'
时间: 2023-08-28 21:28:35 浏览: 304
这个错误通常是由于传递给 `cv2.imshow()` 函数的图像格式不正确引起的。这个函数需要一个 Numpy 数组(或者 OpenCV 的 Mat 对象)作为输入,但是您传递了一个其他类型的对象,例如非数组类型的对象或者 GPU 加速的 Mat 对象。
要解决这个问题,您可以确保传递给 `cv2.imshow()` 函数的图像是一个 Numpy 数组或 OpenCV 的 Mat 对象。您可以使用 `type()` 函数来检查传递的图像对象的类型,确保它是您期望的类型。例如,您可以将代码修改为:
```
import cv2
import numpy as np
img = cv2.imread('image.jpg')
if isinstance(img, np.ndarray):
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
else:
print('Error: Input image is not a Numpy array or Mat object.')
```
这样就可以确保传递给 `cv2.imshow()` 函数的图像是一个 Numpy 数组或 OpenCV 的 Mat 对象,避免出现该错误。
阅读全文