可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am trying to run this simple OpenCV program, but i got this error:
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file .../opencv/modules/highgui/src/window.cpp, line 276
Code:
#include #include using namespace std; int main() { cout
What's the cause of this error?
回答1:
This error means that you are trying to show an empty image. When you load the image with imshow
, this is usually caused by:
- The path of your image is wrong (in Windows escape twice directory delimiters, e.g.
imread("C:\path\to\image.png")
should be: imread("C:\\path\\to\\image.png")
, or imread("C:/path/to/image.png")
); - The image extension is wrong. (e.g. ".jpg" is different from ".jpeg");
- You don't have the rights to access the folder.
A simple workaround to exclude other problems is to put the image in your project dir, and simply pass to imread
the filename (imread("image.png")
).
Remember to add waitKey();
, otherwise you won't see anything.
You can check if an image has been loaded correctly like:
#include #include using namespace cv; int main() { Mat3b img = imread("path_to_image"); if (!img.data) { std::cout
回答2:
I had the exact same problem, only in Raspbian. After hours of trying, the solution was pretty simple, I had to leave out the file extension.
#include #include using namespace std; using namespace cv; int main() { Mat inputImage = imread("beniz1"); imshow("Display Image", inputImage); waitKey(5000); return 0; }
回答3:
Usually it means that your image is not there, it's a basic assertion for checking if the content is displayable in the window before actually displaying it, and by the way you need to create a window in order to show the image namedWindow( "name") then imshow ("name", image);