OpenCVコンピュータービジョンライブラリの操作を、コンピューターのディスプレイからキャプチャしたビデオにリアルタイムで適用したいと思います。この特定のケースのアイデアは、人気のあるゲームのゲームプレイ中に興味深い機能を検出し、ユーザーに強化されたエクスペリエンスを提供することです。しかし、このデータへのライブアクセスも必要になる他のいくつかのシナリオを考えることができます。いずれにせよ、開発フェーズでは、缶詰のビデオを使用しても問題ないかもしれませんが、最終的なアプリケーションのパフォーマンスと応答性は明らかに重要です。
私は今のところUbuntu10.10でこれを行おうとしており、UNIXライクなシステムを使用したいと思っていますが、任意のオプションに関心があります。私のCスキルは非常に限られているので、Pythonを介してOpenCVと通信できる場合は常に、代わりにそれを使用するようにしています。カメラデバイスからではなく、ディスプレイ出力のライブストリームからキャプチャしようとしていることに注意してください。そして、私はどのように入力を受け取るかについて途方に暮れています。私の知る限り、CaptureFromCAMはカメラデバイスでのみ機能します。最終的にはリアルタイムのパフォーマンスが必要なため、ファイルに保存してCaptureFromFileを読み戻すのは悪いオプションのようです。
私がこれまでに見つけた最も有望なルートは、x11ディスプレイからキャプチャするためにx11grabオプションでffmpegを使用しているようです。(たとえば、コマンドffmpeg -f x11grab -sameq -r 25 -s wxga -i:0.0 out.mpgは、ディスプレイ0の1366x768を'out.mpg'にキャプチャします)。おそらくパイプを使用することで、ffmpegからの出力ストリームをOpenCVによって読み取られるファイルとして(おそらくCaptureFromFile関数を使用して)処理できるはずだと思います。しかし、これはすべて私がこれまでに扱ったよりもはるかに高いレベルであり、私は実際にいくつかの方向性を使用することができました。このアプローチは実行可能だと思いますか?そしてもっと重要なことに、あなたはより良いものを考えることができますか?どうしますか?