проблема с cvGetCaptureProperty на opencv - PullRequest
4 голосов
/ 01 января 2012

У меня есть рабочий код opencv, который берет канал с моей веб-камеры и отображает его. (Код изменен с здесь

Единственная проблема заключается в том, что, когда я пытаюсь напечатать значение кадров в секунду, как

int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
printf ("Frames per Second: %d\n",fps);

-1 распечатывается.

Другая (побочная) проблема заключается в том, что, как представляется, возникают некоторые ошибки / предупреждения во время выполнения

VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
select timeout
HIGHGUI ERROR: V4L2: Unable to get property <unknown property string>(5) - Invalid argument
HIGHGUI ERROR: V4L: Property <unknown property string>(2) not supported by device
HIGHGUI ERROR: V4L2: Unable to get property <unknown property string>(1) - Invalid argument
HIGHGUI ERROR: V4L: Property <unknown property string>(2) not supported by device

Но код выполняет то, что должен, т.е. отображает видео с веб-камеры.

Есть идеи, как решить проблемы? Я использую opencv на Eclipse с CDT на Ubuntu 11.10

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 01 января 2012

Судя по сообщениям об ошибках, это звучит как проблема вашего драйвера веб-камеры.Сообщения об ошибках поступают от Video4Linux (V4L или V4L2 в сообщениях об ошибках), который является частью ядра Linux, содержащего драйверы веб-камеры.Получение ошибки select() и сообщения об ошибке «не поддерживается устройством», вероятно, означает, что ваша веб-камера не реализовала эту часть API V4L2.

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

0 голосов
/ 23 июля 2012

Попробуйте это для ошибок HIGHGUI ERROR:

export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so
...