我有一个运行Ångström Linux 3.2.28 的 BeagleBone,我正在尝试从我的相机中捕捉一帧。
所以我插入了我的 USB 网络摄像头,并检查/dev
以确保它显示出来。
确实如此,如video0
(右下)。我知道这是正确的,因为它在我拔掉相机后消失了。
所以现在我启动 Python 并运行以下命令:
root@beaglebone:/dev# python
Python 2.7.2 (default, Sep 11 2012, 16:15:43)
[GCC 4.5.4 20120305 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv
>>> capture=cv.CaptureFromCAM(-1)
>>> img=cv.QueryFrame(capture)
>>> type(capture)
<type 'cv2.Capture'>
>>> type(img)
<type 'NoneType'>
如您所见,我能够充分创建捕获对象,但无法从中拉出框架。我也尝试过使用相机 ID 的不同(或没有)整数参数(-1
在上面的代码中),但无济于事。
作为参考,在我的笔记本电脑上使用IPython运行相同的代码如下所示:
In [1]: import cv
In [2]: capture=cv.CaptureFromCAM(-1)
In [3]: img=cv.QueryFrame(capture)
In [4]: type(capture)
Out[4]: cv2.Capture
In [5]: type(img)
Out[5]: cv2.cv.iplimage
你可以看到,我确实在捕捉图像。我不确定从这里去哪里。
更新:
我已经使用FFmpeg进行了一些尝试,并且能够通过发出以下命令让相机做出响应(即,它的灯亮起):
root@beaglebone:/# ffmpeg -f video4linux2 -i /dev/video0
这很有趣,因为显然 CaptureFromCAM
使用了 V4L 界面……我不知道从这里去哪里。