错误(-215)size.width> 0&&尝试使用OpenCV显示图像时发生size.height> 0

时间:2017-04-23 14:27:42

标签: python opencv

我正在尝试运行一个从OpenCV读取图像的简单程序。但是,我收到了这个错误:

error: ......\modules\highgui\src\window.cpp:281: error: (-215) size.width>0 && size.height>0 in function cv::imshow

知道这个错误意味着什么吗?

这是我的代码:

from matplotlib import pyplot as plt
import numpy as np
import cv2

img = cv2.imread('C:\\Utilisateurs\\Zeineb\\Bureau\\image.jpg',0)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

12 个答案:

答案 0 :(得分:4)

“错误:(-215)”表示断言失败。在这种情况下,cv :: imshow声明给定的图像是非空的:https://github.com/opencv/opencv/blob/b0209ad7f742ecc22de2944cd12c2c9fed036f2f/modules/highgui/src/window.cpp#L281

Getting Started with Images OpenCV Python教程中所述,如果该文件不存在,则cv2.imread()将返回None;它不会引发异常。

因此,以下代码也会导致“(-215)size.width> 0&& size.height> 0”错误:

img = cv2.imread('no-such-file.jpg', 0)
cv2.imshow('image', img)

检查以确保文件实际存在于指定路径中。如果是,则可能是图像已损坏,或者是空图像。

答案 1 :(得分:1)

我在Windows上遇到了同样的错误。但是,没有答案对我有帮助。我意识到问题是图像路径上的单反斜杠(\)而不是双反斜杠(\\)。有关差异,请参见the link

问题场景:

import cv2
mypath = "D:\temp\temp.png"
img = cv2.imread(mypath, 1)
cv2.imshow('test', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Traceback (most recent call last):
  File "<input>", line 1, in <module>
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-2b5g8ysb\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

固定方案:

import cv2
mypath = "D:\\temp\\temp.png"
img = cv2.imread(mypath, 1)
cv2.imshow('test', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我希望它可以帮助具有类似经验的其他人。

答案 2 :(得分:0)

导入cv2

resim = cv2.imread('indir.png',0)

cv2.imshow('d',resim)

cv2.waitKey(0)

cv2.destroyAllWindows()

答案 3 :(得分:0)

确保您给出了正确的图像路径。 仅当您指定了错误的路径时,才会出现此错误。

答案 4 :(得分:0)

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
while(True):
    # Capture frame-by-frame
    ret,frame = cap.read()
    cv2.rectangle(frame, (100, 100), (200, 200), [255, 0, 0], 2)
    # Display the resulting frame
    cv2.imshow('frame',frame)
    if cv2.waitKey(25) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows() 
  

**如果设备的相机访问权限为OFF,则此代码会给出错误;例如:cv2.imshow('frame',frame)cv2.error:OpenCV(4.0.0)   C:\ projects \ opencv-python \ opencv \ modules \ highgui \ src \ window.cpp:350:   错误:(-215:声明失败)size.width> 0 && size.height> 0 in   函数'cv :: imshow'

So You should turn ON it**

答案 5 :(得分:0)

无论何时出现此错误,

  1. 图像的路径错误。
  2. 图像名称错误。

如果输出为“ None”,则我们可以通过在“ print(img)”之后使用“ img = cv2.imread('C:\\Utilisateurs\\Zeineb\\Bureau\\image.jpg',0)”命令进行检查,则图像的路径或名称错误。如果输出是矩阵,则图像读取成功。
在代码“ cv2.waitKey(0)”中,零表示要在屏幕上显示图像的毫秒数,因此它应大于零,例如5000。

答案 6 :(得分:0)

我认为这取决于IDE +图像位置问题的路径

  1. 在python IDLE中,您可以直接从存在图片的同一文件夹中运行文件
example 
img = cv2.imread("kang34.jpg", 0)  # direct use 
  1. 在IntelliJ IDEA中,您必须提供图片所在图片的完整路径
example 
img = cv2.imread("C:\\Users\\DEBASISH\\AppData\\Local\\Programs\\Python\\Python36\\Projects\\kang34.jpg", 0)  # use proper syntax and full path of image location

答案 7 :(得分:0)

当您尝试显示空白图像时,发生此错误。使用cv2.imread()时,图像可能未正确加载,可能是由于图像不存在,文件路径错误或文件扩展名错误所致。您可以通过打印图像的形状来检查图像是否正确加载

image = cv2.imread('picture.png')
print(image.shape)

您将获得类似这样的内容,该结果返回行,列和通道数的元组

  

(400,391,3)

如果OpenCV无法加载图像,则在尝试打印形状时会抛出此错误

  

AttributeError:“ NoneType”对象没有属性“ shape”

答案 8 :(得分:0)

    img=cv2.imread('testpaper01-01.png')
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

您必须在代码中提及图像文件的相同格式(例如:-。jpg / .png / .jpeg / .tif等),并且图像文件的目录必须与源代码相同,我也遇到了同样的错误,但是我以这种方式纠正了

答案 9 :(得分:0)

尝试使用正确的python PATH设置重新安装您使用的IDE。

答案 10 :(得分:-1)

import numpy as np
import cv2
img=cv2.imread('E:\itsme\Camera\pic.jpg',10)
cv2.imshow('image',img)
cv2.waitkey(0)
cv2.destroyallwindows()

只需添加完整的图片目录即可。

答案 11 :(得分:-3)

当我找到jpg的endswitch时,我的问题是相同的-是jpEg。 )