現在、Linux上でopencvを使用して、Minoruステレオウェブカムから画像ペアを取得しようとしています。OpenCvステレオカメラのキャプチャとフレームレートの制限
left = cv2.VideoCapture(0)
left.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320)
left.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 240)
right = cv2.VideoCapture(0)
right.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320)
right.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 240)
while True:
_, left_img = left.read()
_, right_img = right.read()
...
しかし、私は奥行きマップを作成するための画像を使っていて、より大きな解像度が良いでしょう:私は、低解像度を強制するとき それは正常に動作します。しかし、私はデフォルトを残し、または640×480に解像度を強制しようとすると、私はエラーを打っています:
libv4l2:エラーは、ストリームをオンにする:私はUSBの帯域幅については読んだことがあるデバイス
に残されたスペースがありません制限はなく:
- これは(右から最初の読み())最初の反復
- に起こる、私はどこにも近く60あるいは30 FPSを必要としませんが、軽減するために管理することができませんでしたが、「FPSを要求しました」 VideoCapture parを介して私が多くの処理(whileループで)をすると、奇妙なことに "遅れ"に気づくでしょう。現実の世界で起こっていることは、読み込まれた画像の後半に表示されます。これは、実際にはいくつかの画像をたくさん蓄積できるバッファーがあることを示唆しています。
読んだ画像ごとに個別のVideoCaptureを作成してリリースするという回避策を試みましたが、全体的には(< 1FPS)、さらに重要なことに、画像があまりにも多く同期してステレオマッチングに取り組んでいません。
解決策を見つけるためにこれがなぜ失敗するのか理解しようとしています。 v4lは2つのキャプチャオブジェクトによって何らかの形で使用される小さすぎる単一のバッファを割り当てているようです。 ご協力いただければ幸いです。