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 () отображает только первое выбранное изображение, независимо от нового значения пути к изображению.
благодарю вас .

-1

Решение

stringstream не сбрасывает сам себя. Это продолжит добавлять новые значения к существующему. Я предлагаю вам либо сделать переменные с областями действия ss и fullfileName, т.е. переместить их в цикл, ИЛИ сбросить переменную ss непосредственно перед окончанием текущей итерации, например ss.str («»); ss.clear ()

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]