簡體   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