1

OpenCV を使用して C++ プログラムを作成したいと考えています。これにより、ループを継続的に実行して、ユーザーに画像の処理方法を尋ねることができます。たとえば、ユーザーは特定の番号を入力してコマンドを実行できます。私が例として持っているコードは次のとおりです。

int main()
{
    int choose = -1;


    for (;;)
    {

    cin >> choose;

    if (choose == 0)
    {

        Mat img = imread(fileName1);//, CV_LOAD_IMAGE_GRAYSCALE); 

        if (!img.data)
        {
            cout << "Unable to load file." << endl;
        }
        else
        {
            namedWindow(fileName1, 1);
            imshow(fileName1, img);
        }
    }
    else if (choose == 1)
    {
        Mat img = imread(fileName2, CV_LOAD_IMAGE_GRAYSCALE);

        if (!img.data)
        {
            cout << "Unable to load file." << endl;
        }
        else
        {
            namedWindow(fileName2, 1);
            imshow(fileName2, img);
        }
    }
}


waitKey(0);

return 0;

}

画像が読み込まれるはずのウィンドウは、灰色で塗りつぶされています。ループしていない場合、画像の読み込みに問題はありません。なぜこれが問題を引き起こすのか、誰かが私を理解するのを手伝ってくれますか?

編集: もちろん、waitKey(0) を忘れていましたが、それがあったとしても、ループの先頭に戻って数値を入力すると、開かれたウィンドウが何らかの理由でクラッシュします。

4

1 に答える 1

4

waitKeyの代わりに押されたキーを取得するために使用しますcin。または、コメントで述べたように、waitKey(1)after を実行しimshowます。

于 2014-11-23T09:30:44.303 に答える