在 Ubuntu 中选择超时错误 - Opencv

Select Timeout error in Ubuntu - Opencv

本文关键字:错误 Opencv 超时 选择 Ubuntu      更新时间:2023-10-16

我正在尝试为我的最后一年项目设置 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

如果有人知道从这里开始,我将非常感谢一些帮助!

试试这个:

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/

我的罗技 C920 遇到了同样的问题。我尝试了以下解决方案,但没有成功。但是,它与C930e网络摄像头一起工作,所以我想V4L API与它有关。