OpenCV Image Display Failure - PullRequest
       31

OpenCV Image Display Failure

1 голос
/ 01 сентября 2011

Я пытаюсь включить OpenCV (версия 2.3.1) в проект, над которым я работаю. Камера отправляет моей программе (в Microsoft Visual C ++ 2008 на 64-разрядной машине Windows 7) поток изображений, который программа сохраняет в 8-разрядном целочисленном буфере без знака. Я хотел бы отобразить этот поток в окне, используя OpenCV. Сейчас я не могу получить изображения для отображения в своих окнах OpenCV, поэтому я пока не использую свой поток изображений; просто файл JPEG.

Сначала я объявляю свое окно:

namedWindow( "Window", CV_WINDOW_AUTOSIZE );

Тогда я пытаюсь заполнить его:

char* imgName = "C:\...\Jellyfish.jpg";
Mat imgMat = imread(imgName, 1);
if(imgMat.data)
{
     imshow( "Window", imgMat );
}

Когда моя программа достигает точки, где окно объявляется, появляется крошечное серое окно. Когда он достигает точки, где должно отображаться изображение, размеры окна изменяются на размеры изображения (я проверял это на разных изображениях), но внутренняя часть окна остается простой серой рамкой.

Что вызывает эту странную ошибку? Программа явно нашла изображение, иначе не смогла бы правильно изменить его размеры.

1 Ответ

2 голосов
/ 01 сентября 2011

Вам необходимо добавить waitKey(2) вызов функции после imshow.

Из документации OpenCV для waitKey:

Эта функция является единственным методом в HighGUI, который может вызыватьи обрабатывать события, поэтому его необходимо периодически вызывать для обычной обработки событий, если только HighGUI не используется в среде, которая занимается обработкой событий.

Без этой функции Windows не может обработать событие PAINT и перерисоватьваше окно.

...