OpenCV Python无法从路径中有空格的外部硬盘读取图像

Posted

技术标签:

【中文标题】OpenCV Python无法从路径中有空格的外部硬盘读取图像【英文标题】:OpenCV Python can't read image from external HDD with white spaces in path 【发布时间】:2020-03-27 04:26:55 【问题描述】:

编辑: 同时,我发现问题出在 OpenCV + Spaces in Path + External Disk 的组合上。删除任何元素都可以解决问题,因此当前目标只是试图为这种组合找到解决方案。 操作系统是 Windows

已经尝试过:

r 字符串r"TEXT"\\ 更改为/ 双引号"\"TEXT\"\" os 模块 os.path.normpath(PATH)os.path.join([HALF, HALF])

我无法使用 Python-OpenCV 从我的外部 HDD 加载图像。 我可以使用所有osopen Python函数,例如从硬盘读取.TXT文件和list/walk目录但是当我尝试使用cv2.imread加载图像时,我得到一个None对象... 文件路径以 Python 友好的方式编写(使用“\”而不是“”),它可以使用 open(path, "rb") 将图像作为二进制文件读取

我还阅读了 OpenCV 文档并尝试了 Google 和 ***,但我没有找到任何人遇到我的问题,所以我有点不知道下一步该尝试什么......

import cv2
image = cv2.imread("G:\\Fotografias e Vídeos\\[...]\\11009982_1254240047936434_1963406974405452579_n.jpg")
print(image)
cv2.imshow("d", image)
# Output
None
Traceback (most recent call last):
  File "C:\Users\[NAME]\Documents\Python\test.py", line 4, in <module>
    cv2.imshow("d", image)
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

【问题讨论】:

您的具体读取命令是什么?您是否在路径中包含卷? 我不是Windows用户,但应该不是G:\\..... 尝试读取名称中没有空格的文件。看看这是否有效。您尝试读取的文件的尺寸、通道数和数据类型是多少?您能否将相同的文件移动到本地磁盘并尝试从那里读取它。 使用没有空格的路径有效!非常感谢! 带空格的路径需要放在双引号内。因此,如果您转义额外的双引号,则可以使用它们。抱歉,我不是 Windows 用户,但请尝试添加由 ^ 转义的额外引号:cv2.imread("^"G:\\Fotografias e Vídeos\\Algarve\\Pedras del Rei 2015\\11009982_1254240047936434_1963406974405452579_n.jpg^"") 【参考方案1】:

在尝试通过反复试验来解决这个问题时,我发现了一些不能完全解决问题但几乎足够好的解决方法。

如果将脚本复制粘贴到硬盘路径中的某个位置并从内部运行,OpenCV 可以正常读取图像。

正如我所说,这还不理想,所以如果您有解决方案从 PC 内部运行脚本以打开外部源图像,请分享。

【讨论】:

以上是关于OpenCV Python无法从路径中有空格的外部硬盘读取图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在路径有空格的另一个 bash 脚本中运行 bash 脚本?

JAVA关于java中 类.class.getResource("/").getPath()获取路径有空格的问题

linux 在批处理中,完整路径有空格的处理方式(加引號)

用Shell打开文件路径及文件名有空格的文件方法

如何打开文件夹名称之间有空格的doc文件

当项目名称有空格时,无法从桥头获取正确的文件路径