OpenCV imshow не отображает изображение на экране

Я новичок в openCV, недавно получил предварительно скомпилированную версию openCV 2.4.7 и смог успешно интегрировать ее с visual studio 2010.

Очевидно, что библиотека работает нормально, но когда я пытаюсь отобразить изображение с помощью imshow, оно отображает окно, но не отображает в нем изображение.

{
    cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED);

    if(image.empty())
    {
        cout<<"image not loaded";
    }
    else
    {
        cv::namedWindow( "test", CV_WINDOW_AUTOSIZE );
        cv::imshow("test",image);
    }   
}

Любая помощь будет высоко оценена.

Ответ 1

Вы должны иметь:

cv::waitKey(0);

вместо:

system("pause");

Последний просто не работает. OpenCV необходимо перекачать сообщения, чтобы окно отображалось и обновлялось, а внутри этой функции waitKey все это механизм.

Как говорится в документации, waitKey работает только в том случае, если у вас открыто окно HighGUI, поэтому в вашем коде вам, вероятно, нужно это сделать:

cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED);

if(image.empty())
{
    cout<<"image not loaded";
}
else
{
    cv::namedWindow( "test", CV_WINDOW_AUTOSIZE );
    cv::imshow("test",image);
    cv::waitKey(0);
}   

В случае возникновения проблемы с форматом изображения вы можете попробовать выполнить следующее:

cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_COLOR);

Ответ 2

Я предлагаю удалить инструкцию cv::namedWindow и добавить

cv::waitKey();

после оператора cv:imshow. Вы также можете проверить правильность размеров окна.