Серое изображение без try_key - PullRequest
0 голосов
/ 10 июня 2018

У меня есть приложение, которое захватывает кадр с камеры, а затем показывает картинку в виде imshow () следующим образом:

VideoCapture cap(0);

if (!cap.isOpened())  // if not success, exit program
    {
        cout << "Cannot open the web cam" << endl;
        system("pause");
        return -1;
    }

while (true) {
        bool bSuccess = cap.read(imgOriginal); // read a new frame from video
        if (!bSuccess) //if not success, break loop
        {
            cout << "Cannot read a frame from video stream" << endl;
            break;
        }

cv::imshow("Image", imgOriginal);

if (waitKey(10) == 27)
        {
            break;
            return 1;
        }
}

И программа работает хорошо.Но когда я удаляю цикл wait_key и вместо этого даю какой-то другой дескриптор (например, переменную, которая может описывать, если цикл while исправен или даже если, но вместо этого вместо wait_key (10) == 27 я поставил checkVariable == false), все идет не так, как надо,Я получаю серое изображение вместо обычного изображения.Можете ли вы объяснить мне, почему?

1 Ответ

0 голосов
/ 10 июня 2018

Функция waitKey предназначена не только для получения ключа от пользователя, она также эквивалентна spin в других платформах GUI.Это означает, что он также «обновляет» любое событие окна, отображающего изображение, такое как отображение нового изображения (оно начинается со значения по умолчанию серый, скорее всего).Таким образом, вы ДОЛЖНЫ использовать функцию всякий раз, когда вы используете imshow как минимум.Он также делает небольшую паузу (количество миллисекунд, указанное в качестве аргумента), поэтому вы можете использовать его, чтобы избежать циклов простоя, чтобы занять центральный процессор, как сумасшедший.

Вы всегда можете игнорировать результат waitKey, если он вам не нужен, но это должно бежать.

Надеюсь, это очистит ваши сомнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...