Beaglebone黑色视频捕获:错误“选择超时”

时间:2015-06-17 07:20:37

标签: linux opencv video beagleboneblack uvc

嘿,我正在关注Derek Molloy的教程:

http://derekmolloy.ie/beaglebone/beaglebone-video-capture-and-image-processing-on-embedded-linux-using-opencv/#comment-30209

使用Linux UVC驱动程序支持的Logitech c310网络摄像头。

root@beaglebone:/boneCV# v4l2-ctl --all
Driver Info (not using libv4l2):
        Driver name   : uvcvideo
        Card type     : UVC Camera (046d:081b)
        Bus info      : usb-musb-hdrc.1.auto-1
        Driver version: 3.8.13
        Capabilities  : 0x84000001
                Video Capture
                Streaming
Format Video Capture:
        Width/Height  : 640/480
        Pixel Format  : 'YUYV'
        Field         : None
        Bytes per Line: 1280
        Size Image    : 614400
        Colorspace    : SRGB
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 640, Height 480
        Default     : Left 0, Top 0, Width 640, Height 480
        Pixel Aspect: 1/1
Video input : 0 (Camera 1: ok)
Streaming Parameters Video Capture:
        Capabilities     : timeperframe
        Frames per second: 30.000 (30/1)
        Read buffers     : 0
Priority: 2

所以我们可以看到它被Beagleboard读取没问题。 当我尝试捕捉视频时,我只是得到了这个错误:

root@beaglebone:/boneCV# ./capture -f -c 600 -o > output.raw
Force Format 1
select timeout

看看其他主题,人们似乎不知道如何回答这个问题,有这个项目经验的人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

我可以说问题已经解决了。重新启动并在几个小时后再次尝试相机后,它似乎神奇地工作。

我唯一改变的是捕捉调用现在更简单:

./capture -o > output.raw

我还没有将原始文件转换为mpeg4,因为我在输入时安装了ffmpeg,但我可以确认抓取静止图像是否有效。 output.raw的文件大小确认它确实正在捕获视频。如果有人发现并被卡住,我会很乐意尽我所能给予帮助。

奇怪的是,它似乎只是在首先使用图片采集程序后捕获视频。因此,必须有一些抓取器正在初始化的东西,而不是在捕获中发生。

更新:好的,事实证明YUYV视频模式不起作用,但mjpeg确实如此,将其置于抓取模式初始化mjpeg模式,以及它的工作原理。不确定为什么YUYV还没有工作。

答案 1 :(得分:0)

如果比较YUYV的图像尺寸和MJPEG的图像尺寸,您会注意到前者比后者大得多。 BBB的USB端口带宽有限,因此无法以YUYV格式操作相机。 MJPEG输出压缩视频流。不同的opencv版本倾向于更改使用v4l2-ctl命令设置的分辨率,因此您必须更改boneCV代码中的分辨率。我不确定它是如何在c ++中完成的,但在python中,请检查Changing camera resolution in opencv code。根据Matthew的说法,Bandwidth limitations他测试并发现带宽为13.2MB / s。