OpenCV を使用して、1280 x 960 のネイティブ解像度で Web カメラから取得したフレーム (の一部) を分析したいと考えています。Gstreamer とアプリシンクを使用してこれらをキャプチャできます。ただし、OpenCV をインポートするだけで Gstreamer が台無しになり、キャプチャが機能しなくなることに気付きました。OpenCV では 640x480 しかキャプチャできないため、gstreamer が必要です。それがもたらすすべての追加機能が好きになりました。
私の問題を示すために考えられる最も最小限の例は次のとおりです。
import gst
from time import sleep
#import cv2
pipeline = gst.Pipeline()
bin = gst.parse_bin_from_description('''
autovideosrc !
video/x-raw-rgb, width=1280, height=960 !
ffmpegcolorspace !
xvimagesink
''', False)
pipeline.add(bin)
pipeline.set_state(gst.STATE_PLAYING)
while True:
sleep(1)
上記のバージョンでは、インポート cv2 ステートメントのコメントを外すと、問題なく動作します。次のエラー メッセージが表示されます。
libv4l2: エラーで 4 つの連続したフレーム デコード エラーが発生しました。最後のエラー: v4l-convert: エラー フレーム インデックスを列挙できませんでした: 6 for: src を使用した RGB3 1280x960: MJPG 1280x960、エラー: 引数が無効です
OpenCVバージョン2.4.1、Gstreamerバージョン0.10.36を使用して、Kubuntu Linux 12.04を使用しています
Gstreamer を台無しにするために openCV は何をしますか? どうすれば両方を使用できますか?