Ошибка выбора тайм-аута в Ubuntu - Opencv

Я пытаюсь настроить OpenCv на мой последний год проекта и столкнулся с парой проблем. Я успешно настроил его в Ubuntu после этого урока.

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

Он работает нормально в течение 3 или 4 секунд, а затем захват застревает с одним кадром в окне. Консоль отображает следующий вывод.

tom@ubuntu:~/College/opencv/faceDetect_sample$ make
./faceDetect --cascade="haarcascade_frontalface_alt.xml" --nested-cascade="haarcascade_eye_tree_eyeglasses.xml"
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
init done 
opengl support available 
select timeout
select timeout
select timeout
select timeout
select timeout
select timeout
^Cmake: *** [run] Interrupt

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

3 ответа

Решение

Попробуй это:

modprobe uvcvideo nodrop=1 timeout=6000

и если это работает, просто сделайте изменения постоянными, отредактировав /etc/modprobe.d/modprobe.conf

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

Если это не работает,

Включить трассировки модуля:

sudo echo 0xffff > /sys/module/uvcvideo/parameters/trace

Запустите программу, пока ошибка не будет найдена, и остановите ее как можно скорее. Затем отключите следы:

sudo echo 0 > /sys/module/uvcvideo/parameters/trace

Поиск с dmesg для сообщений об ошибках.

Это может быть решено, если мы добавим следующие строки в код:

VideoCapture capture(<device id>);
capture.set(CV_CAP_PROP_FRAME_WIDTH , 352);
capture.set(CV_CAP_PROP_FRAME_HEIGHT , 288);

Ниже приводится хорошая ссылка, где решение подробно объясняется: http://derekmolloy.ie/beaglebone/beaglebone-video-capture-and-image-processing-on-embedded-linux-using-opencv/

У меня была такая же проблема с моим Logitech C920. Я попробовал следующие решения без какого-либо успеха. Тем не менее, с веб-камерой C930e она работала как шарм, поэтому я думаю, что API V4L как-то с этим связан.

Другие вопросы по тегам