首页 > 解决方案 > 我正在尝试使用 OpenCV 在窗口中的相对路径中显示图像,但出现类型错误

问题描述

显然错误消息是类型错误,但是当我打印它时,输出是“”。

我找了一个错误,因为它不是 Numpy 数组,所以我将它转换为 Numpy 数组。

另外,我尝试使用相对或绝对路径读取变量。

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:参数“mat”的预期 cv::UMat

标签: pythonnumpyopencvcv2os.path

解决方案


您的代码存在许多问题。主要的(问题所在)来自以下行: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()
>>>

推荐阅读