Ubuntu 11.10 で OpenCV 2.1 を使用して、3 台の Logitech Webcam Pro 900 デバイスから画像を同時にストリーミングしようとしています。これらの uvcvideo ドライバーが読み込まれます。
2 つのデバイスをキャプチャすると問題なく動作しますが、3 つを使用すると、3 つ目のデバイスで容量不足エラーが発生します。
libv4l2: error turning on stream: No space left on device
私はこの問題に遭遇しているようです: http://renoirsrants.blogspot.com.au/2011/07/multiple-webcams-on-zoneminder.htmlそして、私は quirks=128 (またはほとんど他の2 のべき乗の値) のトリックですが、役に立ちません。また、2 つの USB 2.0 ハブを備えた別のマシンで 2 台のカメラを 1 台に接続し、3 台目のカメラを 2 台目のカメラに接続してみましたが、同じ問題が発生しました。私は大まかに次のように初期化しています(N個のカメラを使用しているため、結果は実際にSTLベクトルに入れられます):
cv::VideoCapture cap0(0); //(0,1,2..)
そして、ループ内のすべてのカメラを次のようにキャプチャしようとします
cap0.retrieve(frame0);
これは、N=2 カメラの場合にうまく機能します。N=3 に設定すると、3 番目のウィンドウが開きますが、画像は表示されず、コンソールは V4L2 エラーでいっぱいになります。同様に、N=2 に設定し、Cheese (単純な Web カメラ キャプチャ アプリケーション) で 3 番目のカメラを開こうとすると、これも機能しません。
ここで大きな問題が発生しますが、3 つのインスタンスを開始して guvcview を試した後、一度に 3 台のカメラを表示できたので (フレーム レートや関連の点で問題はありませんでした)、ハードウェアの問題ではないようです。設定する必要があるプロパティがあると思いますが、それが何であるかわかりません。MJPEG (これらのカメラはサポートしているようです) を調べましたが、このプロパティの設定に成功していないか、OpenCV から起動した場合にどのモード (yuyv?) で実行されているかを検出できませんでした。
考え?