Error de OpenCV: la aserción falló (tamaño.ancho> 0 && tamaño.alto> 0) código simple

Estoy intentando ejecutar este sencillo progtwig OpenCV, pero obtuve este error:

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

Código:

 #include  #include  using namespace std; int main() { cout << "Hello World!" << endl; cv::Mat inputImage = cv::imread("/home/beniz1.jpg"); cv::imshow("Display Image", inputImage); return 0; } 

¿Cuál es la causa de este error?

Este error significa que estás tratando de mostrar una imagen vacía. Cuando carga la imagen con imshow , esto generalmente es causado por:

  1. La ruta de su imagen es incorrecta (en Windows escape dos delimitadores de directorios, por ejemplo, imread("C:\path\to\image.png") debe ser: imread("C:\\path\\to\\image.png") , o imread("C:/path/to/image.png") );
  2. La extensión de la imagen es incorrecta. (por ejemplo, “.jpg” es diferente de “.jpeg”);
  3. Usted no tiene los derechos para acceder a la carpeta.

Una solución simple para excluir otros problemas es colocar la imagen en su directorio de proyecto, y simplemente pasarla para imread el nombre del archivo ( imread("image.png") ).

Recuerde agregar waitKey(); De lo contrario, no verá nada.

Puede verificar si una imagen se ha cargado correctamente, como:

 #include  #include  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; } 

Tenía exactamente el mismo problema, solo en Raspbian. Después de horas de intentarlo, la solución fue bastante simple, tuve que omitir la extensión del archivo.

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

Por lo general, significa que su imagen no está allí, es una afirmación básica para verificar si el contenido se puede visualizar en la ventana antes de mostrarlo, y por cierto necesita crear una ventana para mostrar la imagen llamada Ventana (“nombre” ) luego imshow (“nombre”, imagen);