я пытаюсь показать изображение на основе числа, которое я вручную ввожу [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 () отображает только первое выбранное изображение, независимо от нового значения пути к изображению.
благодарю вас .
stringstream не сбрасывает сам себя. Это продолжит добавлять новые значения к существующему. Я предлагаю вам либо сделать переменные с областями действия ss и fullfileName, т.е. переместить их в цикл, ИЛИ сбросить переменную ss непосредственно перед окончанием текущей итерации, например ss.str («»); ss.clear ()
Других решений пока нет …