Å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'>
ご覧のとおり、キャプチャ オブジェクトは十分に作成できていますが、そこからフレームを取得することはできません。-1
また、カメラ ID (上記のコード) に異なる (またはなしの) 整数引数を使用してこれを試しましたが、役に立ちませんでした。
参考までに、ラップトップで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インターフェイスを使用しているので、これは興味深いです...ここからどこに行くべきかわかりません。