python - 我正在尝试使用 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
解决方案
您的代码存在许多问题。主要的(问题所在)来自以下行:img = np.array(img)
. 您正在从文件路径构建一个np数组(这没有意义),然后将其传递给imread。
你应该:
- 查看:
- 【OpenCV.Docs】:图像文件读写——imread()
- [OpenCV 2.Docs]:您使用的其他功能的用户界面
- 当您有疑问或某些东西不起作用时,打印代码中的任何变量。这将为您节省大量时间,也将使您能够自己解决很多问题
- 从您的代码中删除上述行
示例:
>>> 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() >>>
推荐阅读
- r - R中的协方差函数,用于残差的协方差矩阵
- javascript - 为什么当“document.getElementById('ShowButton').innerText = 'example'”使用相同的 id 时,“element.innerText = “example”' 不起作用?
- javascript - 在函数中传递和操作全局变量
- c++ - Botan MC-Eliece 实施失败,因为已弃用实施示例
- python - 我很困惑将 HTML 多个页面添加/链接到我的 Django 网站
- authentication - chrome 扩展程序和网站之间的登录会话同步
- c# - 等待 C# 中的任务不返回
- java - Spring RestTemplate 调用读取超时
- amazon-web-services - 如何从 Glue Dynamic Dataframe 中提取列名和数据类型?
- r - 在另一列上替换一个列条件中的值:R