2015-07-10 4 views
6

Я пытаюсь запустить эту простую программу OpenCV, но я получил эту ошибку:OpenCV Ошибка: не удалось Assertion (size.width> 0 && size.height> 0) простой код

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

быть уверены, что правильный путь – Miki

+0

также добавить 'WaitKey(); 'в конце, или вы ничего не увидите. – Miki

+0

Я уверен, я скопировал там изображение – user3191398

ответ

9

Эта ошибка означает, что вы пытаетесь показать пустое изображение. При загрузке изображения с imshow, обычно это вызвано:

  1. Путь вашего образа неправильно (в эвакуационных дважды директории разделителей для Windows, например, imread("C:\path\to\image.png") должно быть: imread("C:\\path\\to\\image.png") или imread("C:/path/to/image.png"));
  2. Неправильное расширение изображения. (например, «.jpg» отличается от «.jpeg»);
  3. У вас нет прав для доступа к этой папке.

Простое решение, чтобы исключить другие проблемы, чтобы поместить изображение в папку проекта, а просто перейти на 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; 
} 
+0

Похоже, OP использует linux или, возможно, cygwin. – drescherjm

+0

@ drescherjm да, это всего лишь общая информация о том, как решить эту проблему (есть много вопросов по этой теме). Я добавил наиболее вероятный (и пример только для Windows), не стесняйтесь добавлять их на linux – Miki

0

Обычно это означает, что изображение не существует, это основное утверждение для проверки, если содержание отображаемое в окне, прежде чем на самом деле отображение это, и, кстати, вам нужно создать окно, чтобы показать изображение namedWindow («name»), затем imshow («name», image);

+0

, вам не нужно вызывать 'namedWindow' перед' imshow' – Miki

1

У меня была такая же проблема, только в расписании. После нескольких часов попыток решение было довольно простым, мне пришлось оставить расширение файла.

#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; 
} 
Смежные вопросы