OpenCV imshow() 在循环中显示图像

OpenCV imshow() in a loop to show image

本文关键字:显示 显示图 图像 循环 imshow OpenCV      更新时间:2023-10-16

我想用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),尽管即使我确实有,当我回到循环的开头输入一个数字时,打开的窗口由于某种原因崩溃。

使用 waitKey 获取按下的键而不是cin。或者如评论中所述,在imshow后进行waitKey(1)