我正在尝试显示基于数字的图像我手动输入[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的新值如何。 谢谢。
答案 0 :(得分:2)
stringstream不会自行重置。它将继续为现有值附加新值。我建议您使用ss和fullfileName作用域变量,即在循环内移动它们,或者在当前迭代结束之前重置ss变量,例如ss.str(&#34;&#34;); ss.clear()