【问题标题】:Select Timeout error in Ubuntu - Opencv在 Ubuntu 中选择超时错误 - Opencv
【发布时间】:2012-09-24 18:39:34
【问题描述】:

我正在尝试为我最后一年的项目设置 OpenCv,但遇到了一些问题。我按照this 教程在 Ubuntu 中成功设置了它。

我现在遇到的问题是保持这个sample 程序运行。该程序是使用网络摄像头进行人脸检测。

它运行良好 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

如果有人知道从这里去哪里,我真的很感激一些帮助!

【问题讨论】:

  • 您找到解决方案了吗?

标签: c++ c ubuntu opencv webcam


【解决方案1】:

试试这个:

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 搜索错误消息。

【讨论】:

  • 更新了更多信息,希望对您有所帮助。
【解决方案2】:

如果我们在代码中添加以下几行就可以解决:

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/

【讨论】:

    【解决方案3】:

    我的罗技 C920 也有同样的问题。我尝试了以下解决方案但没有成功。但是,它对 C930e 网络摄像头的作用就像一个魅力,所以我猜 V4L API 与它有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-05
      • 2018-06-14
      • 2019-07-07
      • 2015-05-11
      • 1970-01-01
      • 2015-09-02
      • 2017-03-28
      • 1970-01-01
      相关资源
      最近更新 更多