OpenCV错误:断言失败(size.width> 0&& size.height> 0)简单代码

时间:2015-07-10 13:20:03

标签: c++ opencv

我正在尝试运行这个简单的OpenCV程序,但是我收到了这个错误:

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file .../opencv/modules/highgui/src/window.cpp, line 276

代码:

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;

int main()
{
    cout << "Hello World!" << endl;

    cv::Mat inputImage = cv::imread("/home/beniz1.jpg");
    cv::imshow("Display Image", inputImage);

    return 0;
}

导致此错误的原因是什么?

7 个答案:

答案 0 :(得分:13)

此错误表示您尝试显示空图像。使用imshow加载图片时,通常会导致:

  1. 您的图片路径错误(在Windows转义两次目录分隔符中,例如imread("C:\path\to\image.png")应该是:imread("C:\\path\\to\\image.png")imread("C:/path/to/image.png"));
  2. 图片扩展名错误。 (例如&#34; .jpg&#34;与&#34; .jpeg&#34;)不同;
  3. 您无权访问该文件夹。
  4. 排除其他问题的一个简单解决方法是将图像放在项目目录中,然后简单地传递给imread文件名(imread("image.png"))。

    请务必添加waitKey();,否则您将无法看到任何内容。

    您可以检查图像是否已正确加载,如:

    #include <opencv2\opencv.hpp>
    #include <iostream>
    using namespace cv;
    
    int main()
    {
        Mat3b img = imread("path_to_image");
    
        if (!img.data)
        {
            std::cout << "Image not loaded";
            return -1;
        }
    
        imshow("img", img);
        waitKey();
        return 0;
    }
    

答案 1 :(得分:1)

通常这意味着你的图像不存在,它是一个基本的断言,用于在实际显示内容之前检查内容是否可以在窗口中显示,以及创建窗口以显示名为Windows的图像的方式( “名称”然后imshow(“名称”,图像);

答案 2 :(得分:1)

我有完全相同的问题,只在Raspbian中。经过几个小时的尝试,解决方案非常简单,我不得不省略文件扩展名。

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;
int main()
{
    Mat inputImage = imread("beniz1");
    imshow("Display Image", inputImage);
    waitKey(5000);

    return 0;
}

答案 3 :(得分:1)

在Ubuntu中使用Qt Creator时,我也遇到了同样的错误。该图像位于项目文件夹中,因此我认为无需提供完整路径。

img = imread("baboon.png");

我得到的错误是:

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /build/opencv-36Gs_O/opencv-3.2.0+dfsg/modules/highgui/src/window.cpp, line 304
terminate called after throwing an instance of 'cv::Exception'
  what():  /build/opencv-36Gs_O/opencv-3.2.0+dfsg/modules/highgui/src/window.cpp:304: error: (-215) size.width>0 && size.height>0 in function imshow

通过提供完整路径解决了错误:

img = imread("home/vivek/QT_ImageProcessing/IP_HomeWork1/baboon.png");

答案 4 :(得分:0)

仔细检查图像的路径

答案 5 :(得分:0)

很可能是您未使用正确的图像路径或图像格式。 如果您使用的是Windows: img = cv2.imread(“ C:/Users/mohin/Pictures/IMG_4514.jpg”)

答案 6 :(得分:0)

只需将图像添加到项目目录文件夹中即可。

方法:

在默认情况下位于左侧的Search Solution Explorer上,右键单击您的项目名称。

2-单击文件浏览器中的“打开”文件夹

3-将您的图片粘贴到该文件夹​​中

然后

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;
int main()
{
    //change "beniz1" to "beniz1.jpg"

    Mat inputImage = imread("beniz1.jpg"); 
    imshow("Display Image", inputImage);
    waitKey(5000);

    return 0;
}