【问题标题】:Error (-215) size.width>0 && size.height>0 occurred when attempting to display an image using OpenCV尝试使用 OpenCV 显示图像时发生错误 (-215) size.width>0 && size.height>0
【发布时间】:2017-04-23 14:27:41
【问题描述】:

我正在尝试运行一个从 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()

【问题讨论】:

  • 欢迎来到 Stack Overflow!抱歉,本网站要求您仅用 英语 发表您的问题。请自行翻译;其他人为您翻译不会帮助您理解 cmets 和答案,也不会回复反馈。
  • 我遇到了同样的错误,后来意识到我正在读取一个以 jpg 扩展名存储的 HTML 文件类型。

标签: python opencv


【解决方案1】:

此错误显示在任一情况下,

  1. 图片路径错误。
  2. 图片名称错误。

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

【讨论】:

  • 我不明白我的问题,我查了这个名字,它是错误的!
  • 这是最好的答案!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
        img=cv2.imread('testpaper01-01.png')
        cv2.imshow('image',img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    

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

    【讨论】:

    • 请在您的回答中描述问题是什么,以及这个 sn-p 将如何解决它,以帮助其他人理解这个答案
    【解决方案4】:

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

    【讨论】:

    • 最好举几个例子。
    【解决方案5】:

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

    希望对有类似经历的人有所帮助。

    【讨论】:

      【解决方案6】:
      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) 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**
      

      【讨论】:

        【解决方案7】:
        import numpy as np
        import cv2
        img=cv2.imread('E:\itsme\Camera\pic.jpg',10)
        cv2.imshow('image',img)
        cv2.waitkey(0)
        cv2.destroyallwindows()
        

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

        【讨论】:

          【解决方案8】:

          当我找到 jpg 的 endswitch 时,我的问题是一样的 - 它是 jpEg。 )

          【讨论】:

            【解决方案9】:

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

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

            你会得到这样的东西,它返回一个包含行数、列数和通道数的元组

            (400, 391, 3)

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

            AttributeError: 'NoneType' 对象没有属性 'shape'

            【讨论】:

              【解决方案10】:

              我认为这取决于图像位置问题的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
              

              【讨论】:

                【解决方案11】:

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

                【讨论】:

                  猜你喜欢
                  • 2015-03-13
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-09-03
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多