OpenCVでgstreamerパイプの途中でフレームを処理しようとしています。OpenCV処理をgstreamerビデオストリームに追加する
Iを受信するためにOpenCVのコードをappsinkに送信ストリームを生成する1本のGStreamerのパイプを持っている:
v4l2src ! ffmpegcolorspace ! jpegenc ! appsink name=sink
と他の管(OpenCVのデータを送信した)appsrcからそれを取得して画面に出力します:
私は、すべてのフレームをシンクでプルバッファ要求で開き、OpenCVで処理してから、srcでプッシュバッファを使用します。私はPythonでこれをすべてやっています。
何らかの理由で、動作していないようです(セグメンテーションフォルト)。
しかし、私はそれを修正しようとしていません。とにかくそれはひどく非効率的です。 OpenCVが出力シンクに達する前にフレームを処理する方法があるかどうか疑問に思っていますか?
gst-opencvが提供できるものより多くを望むので、あなたのロジックをC(またはC++)で書いても大丈夫なら、恐らくgstのプラグインとして書こうとするべきでしょうか? gst-opencvプラグインのソースの1つを開始点として取ることができます – sinelaw
もう1つのこと - あなたの例はv4l2からちょうど掴んでいるようですが、opencvのHighGui APIは既にそれをサポートしています(または少なくとも '2'のないv4l)。あなたが本当にgstreamerを必要としない場合は、これが最も簡単な解決策になります。 – sinelaw
1.良い提案、私はそれを行うかもしれません。 2.この場合はHighGUIを使用できますが、v4l2srcは単なる例として使用されています。実際のアプリケーションでは、私はtcpソースからビデオストリームを取得しようと考えていますので、OpenCVですべてを実装することはできません。 – SMiLE