imshow()不会更新其内容c ++

时间:2016-05-06 18:02:36

标签: c++ opencv imshow

我正在尝试显示基于数字的图像我手动输入[0或1],之后它从文件夹中的20个图像中随机选择一个图像进行显示。 这是代码

stringstream ss;
string fullfileName;
int x;
int pic = 0;
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
while (1)
{
    Mat img;
    pic = 0;
    cin >> x;
    if (x == 0)
    {
        pic = rand() % ((10 - 1) + 1) + 1;
    }
    else if (x == 1)
    {
        pic = rand() % ((20 - 11) + 1) + 11;
    }


    ss << "C:/Users/abed/Desktop/Opencv/test/" << pic << ".jpg";
    ss >> fullfileName;
    img = imread(fullfileName, CV_LOAD_IMAGE_UNCHANGED);

    imshow("MyWindow", img);
    char key = (char)waitKey(20);
    if (key == 27)
        break;

}
return 0;

我的问题是:imshow()只渲染第一个图像,而不管图像Path的新值如何。 谢谢。

1 个答案:

答案 0 :(得分:2)

stringstream不会自行重置。它将继续为现有值附加新值。我建议您使用ss和fullfileName作用域变量,即在循环内移动它们,或者在当前迭代结束之前重置ss变量,例如ss.str(&#34;&#34;); ss.clear()