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 加载图像。
我可以使用所有os
和open
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 脚本?