繁体   English   中英

openCV imshow 不在屏幕上渲染图像

[英]openCV imshow not rendering image on screen

我是 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);
    }   
}

任何帮助将不胜感激。

你必须:

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);

我建议删除cv::namedWindow语句,并添加

cv::waitKey();

cv:imshow语句之后。 您还可以检查窗口的尺寸是否正确。

对于 Python 用户,使用cv2.wait(0)是解决方案。 所以,整体格式是这样的

    cv2.imwrite("DetectionResults.jpg", frame)
    cv2.imshow("DetectionResults", frame)
    cv2.waitKey(0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM