os.path.isfile() 返回 False。这可能是什么原因造成的?

问题描述 投票:0回答:2

嗨,我正在尝试使用以下代码读入并显示带有 cv2 的图片以进行进一步分析:

编辑:我添加了清晰的用户名路径,以证明它不包含古怪的字符。我还尝试了多个 .jpg 文件。我正在使用 opencv-python 版本 4.9.0.80

import cv2 

path = r'C:\Users\Max\Documents\Pictures\pandas_secondary.jpg'

image = cv2.imread(path) 

window_name = 'image'

cv2.imshow(window_name, image) 

cv2.waitKey(0) 

cv2.destroyAllWindows() 

但是,这给了我以下错误:

error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:971: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

我的图像路径在我第一个发布的问题中是正确的,我只是针对该问题将其匿名化。现在我添加了实际路径。我在这里做错了什么?

更新:将图片移动到与我的 python 代码相同的目录会导致代码永远运行,即使图片只有 20 kb 大小。不过,用枕头展示图片效果很好。我还通过以下方式重新安装了 cv2:

pip install --upgrade --force-reinstall opencv-python

这并没有解决问题。

这是图片:

os.path.isfile(path)

返回错误。

python file path anaconda conda
2个回答
0
投票
if image is None:
    print("Error: Image not loaded. Check the file path.")
else:
    window_name = 'image'
    cv2.imshow(window_name, image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

添加此并检查


0
投票

此错误的问题 (

error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
) 是图像不存在、图像已损坏或提供的路径错误。在我的计算机上重现您的问题,我相信您的错误在于路径。尝试用正斜杠替换反斜杠。这解决了我的问题。

如果这不是您的问题,正如一些用户在评论中指出的那样,请在您的计算机上尝试以下代码:

import cv2 

path = r'C:\Users\Max\Documents\Pictures\pandas_secondary.jpg'
window_name = 'image'
image = cv2.imread(path)

if image is None:
    raise Exception("Either the image does not exist, it is corrupted, or the path provided is wrong.")
else:
    cv2.imshow(window_name, image)
    cv2.waitKey(0)
    cv2.destroyAllWindows() 

如果引发异常,则说明库有问题,而不是 Python。我已经在我的计算机上尝试了上述方法,它工作得很好(一旦我改变了斜杠的方向)。如果对你来说,它仍然没有,也许尝试将图像的绝对路径更改为相对路径。最后,作为最后的手段,您可以卸载并重新安装 OpenCV,但情况可能并非如此。使用以下命令:

python3 -m pip uninstall opencv-python

python3 -m pip install opencv-python

编辑:出于某种原因,如果您在使用相对路径的同时在 VS Code 中运行代码,OpenCV 无法识别该文件(产生您指出的错误),除非您将其放在编辑器的工作区中。

© www.soinside.com 2019 - 2024. All rights reserved.