Синхронизация скринкаста (ffmpeg) и захвата с веб-камеры (OpenCV) - PullRequest
2 голосов
/ 05 июня 2010

Как и в моих предыдущих вопросах, я пытаюсь создать простой трекер глаз. Решил начать с версии Linux (запустить Ubuntu).

Для выполнения этой задачи необходимо организовать экранирование и захват веб-камеры таким образом, чтобы кадры из обоих потоков точно совпадали, и в каждом из них было одинаковое количество кадров.

Показ кадров в секунду полностью зависит от частоты кадров камеры, поэтому каждый раз, когда мы получаем изображение с веб-камеры, мы можем потенциально захватывать кадр экрана и оставаться довольными. Однако все инструменты для быстрого показа экрана, такие как, например, ffmpeg, возвращают файл .avi в качестве результата и требуют запуска уже известного fps.

С другой стороны, таким инструментам, как Java + Robot или ImageMagick, по-видимому, требуется около 20 мс, чтобы вернуть скриншот .jpg, что довольно медленно для задачи. Но они могут запрашиваться сразу после каждого захвата кадра веб-камеры и обеспечения необходимой синхронизации.

Итак, подвопросы:

  1. Изменяется ли частота кадров камеры USD в течение одного сеанса?
  2. Существуют ли какие-либо инструменты, обеспечивающие быстрое покадровое вещание?
  3. Есть ли способ заставить ffmpeg выдвигать новый кадр в файл .avi только тогда, когда программа инициирует этот запрос?

Для своей задачи я могу использовать C ++ или Java.

На самом деле я дизайнер интерфейса, а не программист драйверов, и эта задача кажется довольно низкоуровневой. Буду благодарен за любые предложения и советы!

1 Ответ

1 голос
/ 05 июня 2010

Используйте функцию cvGetCaptureProperty(CvCapture* capture, int property_id) из HighCUI OpenCV с property_id = CV_CAP_PROP_FPS для определения кадров в секунду, снятых вашей веб-камерой.

Пример использования:

CvCapture *capture = 0;
double fps = 0.0;

capture = cvCaptureFromCAM( 0 );
fps = cvCaptureProperty(capture, CV_CAP_PROP_FPS);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...