захват видео с ++ с использованием opencv - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь захватить видео с помощью веб-камеры Logitech C920 с полным разрешением HD.Это обеспечивает 30 кадров в секунду с этим разрешением.

Он работает с приложением Windows Camera на скорости 30 кадров в секунду, но что бы я ни пытался, я не смог получить эту частоту кадров в секунду с opencv videoCapture.

Примечание: я использую windows 10 и vs15.Я пробовал с разными USB-портами, версиями opencv и кодеками.Результат тот же, ~ 5 кадров в секунду.

Я измерял частоту кадров в секунду, игнорируя первые 10 кадров.Вот мои расчеты: только read = "5.04fps", read + imshow = "4.97fps" и read + imshow + write = "4.91fps"

void main()
{
    mainStream.open(0);
    mainStream.set(CV_CAP_PROP_FRAME_WIDTH, 1920);
    mainStream.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);
    mainStream.set(CV_CAP_PROP_FPS, 30);
    mainStream.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G'));
    mainWriter.open("outputnew2.avi", CV_FOURCC('M', 'J', 'P', 'G'), 30, cv::Size(frameW, frameH), true);
    namedWindow("frame", 1);

    while (true){
        Mat frame;
        mainStream >> frame;
        imshow("frame", frame);
        if (waitKey(5) == 27)
            break;
        mainWriter << frame;
    }
    mainStream.release();
    mainWriter.release();
}

1 Ответ

0 голосов
/ 29 мая 2018

Прежде всего:

Метод imshow очень медленный (в довольно относительном объеме).Попробуйте измерить реальный fps, пока вы не покажите изображение, а не запишите изображение в файл.

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

Пожалуйста, опубликуйте результаты достигнутой скорости fps без показа или записи изображения.

Редактировать:

Хорошо, вы почти всегда получаете 5 кадров в секунду, что довольно медленно.Соответствует ли сохраненное видео (или изображения) разрешению, которое вы хотели?Они действительно 1920x1080?

В этом случае измеренные времена отличаются от выпуска и отладочной сборки?

Edit2:

Если тот же код работает с другими usb-камерами (и они производят больше кадров в секунду, чем C920) Мой непосредственный подозреваемый - это сам C920 (или, по крайней мере, его драйвер).Поможет ли это, если вы деинсталлируете драйвер для него (в конце концов, перезагрузитесь) и снова установите самый новый драйвер?

Другое дело: меняется ли измеренный fps, если вы не запрашиваете 30, но, возможно, как 20 fps?

Edit3:

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

...