Ошибка выбора тайм-аута в 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 как-то с этим связан.