我正在尝试运行这个简单的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;
}
导致此错误的原因是什么?
答案 0 :(得分:13)
此错误表示您尝试显示空图像。使用imshow
加载图片时,通常会导致:
imread("C:\path\to\image.png")
应该是:imread("C:\\path\\to\\image.png")
或imread("C:/path/to/image.png")
); 排除其他问题的一个简单解决方法是将图像放在项目目录中,然后简单地传递给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;
}