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 回答