openCV imshow不在屏幕上渲染图像

Usa*_*ama 16 c++ opencv visual-studio-2010

我是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);
    }   
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将受到高度赞赏.

Rog*_*and 26

你必须有:

cv::waitKey(0);
Run Code Online (Sandbox Code Playgroud)

代替:

system("pause");
Run Code Online (Sandbox Code Playgroud)

后者只是不起作用.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);
}   
Run Code Online (Sandbox Code Playgroud)

如果图像格式有问题,您可以尝试加载如下:

cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_COLOR);
Run Code Online (Sandbox Code Playgroud)

  • 我不能再感谢你了,非常感谢你解决了我的问题 (3认同)