嗨,我正在尝试使用以下代码读入并显示带有 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)
返回错误。
此错误的问题 (
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 无法识别该文件(产生您指出的错误),除非您将其放在编辑器的工作区中。
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()
添加此并检查