web-dev-qa-db-ja.com

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

任意の助けをいただければ幸いです。

16
Usama

絶対必要です:

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);
27
Roger Rowland

cv::namedWindowステートメントを削除して、

cv::waitKey();

cv:imshowステートメントの後。ウィンドウの寸法が正しいかどうかを確認することもできます。

1
Totoro