c++ openCV imshow不在屏幕上渲染图像

ocebsuys  于 2023-03-05  发布在  其他
关注(0)|答案(4)|浏览(160)

我是openCV的新手,最近获得了openCV 2.4.7的预编译版本,并成功地将其与visual studio 2010集成。
显然,library看起来工作正常,但是当我尝试使用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);
    }   
}

任何帮助都将不胜感激。

2ic8powd

2ic8powd1#

您必须具备:

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

vohkndzv2#

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

cv::waitKey();

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

7ivaypg9

7ivaypg93#

对于Python用户来说,使用cv2.wait(0)是一种解决方案。

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

oalqel3c4#

cv2.waitKey(0)无限期地等待按键。如果需要更新流数据,最好使用cv2.pollKey()而不是(经常建议的)cv2.waitKey(1),这实际上会引入至少1毫秒的延迟。

相关问题