J'essaie d'exécuter ce programme OpenCV simple, mais j'ai eu cette erreur:
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file .../opencv/modules/highgui/src/window.cpp, line 276
Code:
#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;
}
Quelle est la cause de cette erreur?
Cette erreur signifie que vous essayez d'afficher une image vide. Lorsque vous chargez l'image avec imshow
, cela est généralement dû à:
imread("C:\path\to\image.png")
devrait être: imread("C:\\path\\to\\image.png")
ou imread("C:/path/to/image.png")
);Une solution de contournement simple pour exclure d'autres problèmes consiste à placer l'image dans le répertoire de votre projet et à passer simplement à imread
le nom de fichier (imread("image.png")
).
N'oubliez pas d'ajouter waitKey();
, sinon vous ne verrez rien.
Vous pouvez vérifier si une image a été chargée correctement comme:
#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;
}
J'ai eu exactement le même problème, uniquement dans Raspbian. Après des heures d'essais, la solution était assez simple, j'ai dû omettre l'extension du fichier.
#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;
}
Habituellement, cela signifie que votre image n'est pas là, c'est une assertion de base pour vérifier si le contenu est affichable dans la fenêtre avant de l'afficher, et au fait, vous devez créer une fenêtre afin d'afficher l'image nommée Windows ("nom" ) puis imshow ("nom", image);
revérifiez votre chemin vers une image