2

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関数を使用して)処理できるはずだと思います。しかし、これはすべて私がこれまでに扱ったよりもはるかに高いレベルであり、私は実際にいくつかの方向性を使用することができました。このアプローチは実行可能だと思いますか?そしてもっと重要なことに、あなたはより良いものを考えることができますか?どうしますか?

4

2 に答える 2

0

主な課題はリアルタイムの要件だと思います。ffmpegでビデオを取得するためのコードに触発された、OpenCv用のソフトウェアを作成する必要があると思います。しかし、それは確かに経営幹部レベルのコーディングを伴います。

私の提案は、ffmpegでキャプチャされたビデオを使用して、最初にビジョンアルゴリズムを正しく取得することを試みることです。

于 2010-10-30T19:51:08.543 に答える
0

リアルタイムのパフォーマンスを求めている場合は、スクリーンショットを撮るためにx11grabまたはその他のコマンドラインツールを破棄します。

独自のスクリーングラバーを作成して、OpenCVに直接送信できるようにします。X11でそれを行う方法を知りたい場合は、xwdソースコードを参照してください。

于 2010-11-01T14:28:29.207 に答える