1

嘿,我正在关注 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

看了其他帖子,大家似乎不知道怎么回答这个问题,有这个项目经验的人可以帮帮我吗?

4

2 回答 2

1

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

于 2016-05-26T12:04:59.013 回答
-1

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

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

./capture -o > output.raw

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

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

更新:好的,事实证明 YUYV 视频模式不工作,但 mjpeg 工作,将其置于抓取模式初始化 mjpeg 模式,这就是它工作的原因。不知道为什么 YUYV 还不能工作。

于 2015-06-17T20:38:53.150 回答