为什么在Python中cv2.imshow()会出错?

5 投票
5 回答
53557 浏览
提问于 2025-04-18 01:07

我在运行一些基本的OpenCV代码时遇到了错误。代码如下:

import numpy as np
import cv2
img=cv2.imread('C:\Users\Pravin\Desktop\a.jpeg',1)
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.Waitkey(10000)
cv2.imshow('cv2.WINDOW_NORMAL',img)
cv2.destoryAllWindows()

对于cv2.imshow()这个函数,出现的错误是:

Traceback (most recent call last):
 File "<pyshell#3>", line 1, in <module>
cv2.imshow('image',img)
error: ..\..\..\src\opencv\modules\highgui\src\window.cpp:261: error: (-215)
size.width>0 && size.height>

这个错误为什么会发生,我该如何避免呢?

5 个回答

0

这是因为,Python编译器找不到那个图片。如果你把图片复制到Python的工作目录里,然后再试试,这样就可以了。我就是这么做的,成功了。

    # keep image in the current working directory
    img=cv2.imread('roi.jpg',1) 
    cv2.imshow('image',img)
1

对我来说,只要把jpeg改成jpg就可以了。

你也试试这个,可能会有效果。

import numpy as np
import cv2
img=cv2.imread('C:\Users\Pravin\Desktop\a.jpg',1)    #changed image format to jpg
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.Waitkey(10000)
cv2.imshow('cv2.WINDOW_NORMAL',img)
cv2.destoryAllWindows()
1

试试这个...

import numpy as np
import cv2
img = cv2.imread('E:/Images/ece/1.png',1)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3

这个错误提示说你打开的图片不符合条件,要求图片的 高度 > 0宽度 > 0。这可能有几个原因。

大多数情况下,这是因为你在 imread 中提供的图片地址是不存在的。

有时候,也可能是因为 imread 没能成功加载图片。比如,如果你在记事本里随便写了一些文字,然后把文件保存为 a.jpg,那么 imread 很可能无法加载这个文件。

6

很可能是imread这个函数没有成功。请确认一下图片"C:\Users\Pravin\Desktop\a.jpeg"确实存在。(这个.jpeg的后缀看起来有点不常见,可能应该用.jpg?)

另外,正如Hyperboreus提到的,试试在文件名中使用正斜杠,比如"C:/Users/Pravin/Desktop/a.jpg",或者把反斜杠进行转义。

"C:\\Users\\Pravin\\Desktop\\a.jpg"

撰写回答