我正在尝试使用 OpenCV 在 window 中的相对路径中显示图像,但出现类型错误
I am trying to display an image in a relative path in a window using OpenCV, but I get a Type Error
显然错误消息是类型错误,但是当我打印它时输出是“None”。
我找了一个错误,因为它不是一个Numpy数组,所以我把它转换成一个Numpy数组。
此外,我尝试使用相对或绝对路径 imread 变量。
Img_Folder = os.path.join(os.getcwd(), 'Photo', 'GMD Miss')
File_List = os.listdir(Img_Folder)
img = Img_Folder + File_List[0]
img = np.array(img)
img = cv2.imread(img)
cv2.imshow('img', img)
cv2.waitkey(0)
cv2.destroyAllWindows()
因此,我收到了这条错误消息。
TypeError: Expected cv::UMat for argument 'mat'
您的代码有很多问题。主要的(问题是关于)来自行:img = np.array(img)
。您正在从文件路径构建一个 np 数组( 这毫无意义),然后将其传递给 imread.
你应该:
- 检查:
- 当您有疑问或某些东西不起作用时,打印代码中的任何变量。这会为你节省很多时间,也能让你自己解决很多问题
- 从您的代码中删除上述行
示例:
>>> import os
>>> import cv2
>>>
>>> img_file_name = os.path.join(os.getcwd(), "..\..\c", "2160-0.jpg")
>>> img_file_name # Make sure that the path contains all the path separators (which doesn't happen in your case, as the last one is missing, because of: `img = Img_Folder + File_List[0]`)
'C:\WINDOWS\system32\..\..\c\2160-0.jpg'
>>>
>>> img = cv2.imread(img_file_name)
>>> type(img), img.shape
(<class 'numpy.ndarray'>, (316, 647, 3))
>>>
>>> cv2.imshow("Image", img)
>>> cv2.waitKey(0) # Capital K
>>>
>>> cv2.destroyAllWindows()
>>>
显然错误消息是类型错误,但是当我打印它时输出是“None”。
我找了一个错误,因为它不是一个Numpy数组,所以我把它转换成一个Numpy数组。
此外,我尝试使用相对或绝对路径 imread 变量。
Img_Folder = os.path.join(os.getcwd(), 'Photo', 'GMD Miss')
File_List = os.listdir(Img_Folder)
img = Img_Folder + File_List[0]
img = np.array(img)
img = cv2.imread(img)
cv2.imshow('img', img)
cv2.waitkey(0)
cv2.destroyAllWindows()
因此,我收到了这条错误消息。
TypeError: Expected cv::UMat for argument 'mat'
您的代码有很多问题。主要的(问题是关于)来自行:img = np.array(img)
。您正在从文件路径构建一个 np 数组( 这毫无意义),然后将其传递给 imread.
你应该:
- 检查:
- 当您有疑问或某些东西不起作用时,打印代码中的任何变量。这会为你节省很多时间,也能让你自己解决很多问题
- 从您的代码中删除上述行
示例:
>>> import os >>> import cv2 >>> >>> img_file_name = os.path.join(os.getcwd(), "..\..\c", "2160-0.jpg") >>> img_file_name # Make sure that the path contains all the path separators (which doesn't happen in your case, as the last one is missing, because of: `img = Img_Folder + File_List[0]`) 'C:\WINDOWS\system32\..\..\c\2160-0.jpg' >>> >>> img = cv2.imread(img_file_name) >>> type(img), img.shape (<class 'numpy.ndarray'>, (316, 647, 3)) >>> >>> cv2.imshow("Image", img) >>> cv2.waitKey(0) # Capital K >>> >>> cv2.destroyAllWindows() >>>