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



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

error: ......moduleshighguisrcwindow.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()

"错误:(--215("表示断言失败。

正如从"映像"启动中指出的那样,如果文件不存在,则cv2.imread((将返回 None;它不会引起例外。

因此,以下代码还会导致"(-215(size.width> 0& amp; size.height> 0"错误:

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

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

此错误显示何时,

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

我们可以在' img = cv2.imread('C:\Utilisateurs\Zeineb\Bureau\image.jpg',0)'之后使用' CC_3'之后使用' CC_3'的命令对其进行检查,如果输出为"无",则图像的路径或名称是错误的。如果输出是矩阵,则图像读取成功。
在代码' cv2.waitKey(0)'中,零显示了将在屏幕上显示的毫秒,以便大于5000的零。

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

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

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

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() 

**如果设备的摄像机访问关闭,则此代码会出现错误;例如:cv2.imshow('frame',frame(cv2.error:opencv(4.0.0((4.0.0( c: projects opencv-python opencv 模块 highgui src window.cpp:350: 错误:(-215:断言失败(size.width> 0&&size.height> 0 in 功能'cv :: imshow'

So You should turn ON it**

我在Windows上遇到了相同的错误。但是,没有任何答案对我有帮助。我意识到,这个问题是单个后斜线((,而不是图像路径上的双反斜击(\(。有关差异,请参见链接。

有问题的方案:

import cv2
mypath = "D:temptemp.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:UsersappveyorAppDataLocalTemp1pip-req-build-2b5g8ysbopencvmoduleshighguisrcwindow.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()

我希望它能帮助其他经历类似经验的人。

当您尝试显示空图像时会发生此错误。该图像可能无法正确加载,并且可能是由于不存在的图像,不正确的文件路径或不正确的文件扩展名时引起的。您可以通过打印其形状

来检查图像是否正确加载
image = cv2.imread('picture.png')
print(image.shape)

您将获得类似的东西,这些元组的元组是行,列和频道

(400,391,3(

如果OpenCV无法加载图像,则在尝试打印形状

时会丢弃此错误

attributeError:'nontype'对象没有属性'shape'

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

  1. 在Python闲置中,您可以直接从那里的同一文件夹运行文件
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

尝试使用适当的python路径设置来重新安装您使用的IDE。

我在使用Inlcude标头文件和库不匹配的InlCude标头文件时也有相同的问题。希望它会有所帮助!

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

只需在字符串中添加图片的完整目录。

最新更新