OpenCV imshow () в цикле, чтобы показать изображение

Я хотел бы создать программу на C ++ с OpenCV, которая позволила бы мне постоянно запускать цикл, чтобы спросить пользователя, что делать с изображением. Например, пользователь может ввести конкретный номер для выполнения команды. Код, который я имею в качестве примера:

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

0

Решение

использование waitKey чтобы получить нажатую клавишу вместо cin, В качестве альтернативы, как сказано в комментариях сделать waitKey(1) после imshow,

2

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


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