放送するMPEG2ファイルのフレームごとにピクセルのRGB値を変更し、放送と同時にテレビ画面のフレームごとに変更後のピクセルのRGB値を読み出して保存するC++プログラムを作りたいです。画面のすべてのピクセル値または画面の特定の走査線を読み取って保存する必要がある場合、ブロードキャストと同時に動作できますか? そして、それを行う最良の方法とハードウェア要件は何ですか? そして、私のプログラムのヒントを教えていただけますか?
3 に答える
タイタニック号を沈める氷山は、膨大な量のデータです。メインプロファイルの非圧縮mpeg2は、720ピクセルhor x 576verxピクセルあたり3バイトx30フレーム=37メガバイト/秒です。ハードディスクには多すぎます。また、フレームごとに30ミリ秒を超える時間を費やすことはできません。そして、コンテキストスイッチから簡単に多くを失うことになります。それらの基本的な制約に焦点を合わせます。
OpenCVは、必要な機能を実行できるようになります。ストリームI/O遅延が十分に小さくなるかどうかは、要件と使用可能なハードウェアによって異なります。
CUDA / OpenCLを介してグラフィックサーバーに処理を活用することは、おそらく最善の方法です。
大量のグラフィックス (通常はゲーム グラフィックス) を処理する場合、多くの場合、グラフィックス カードの機能が使用されます。ほとんどのグラフィックス カードには GPU (グラフィックス プロセッサ ユニット) が搭載されており、これらの GPU はピクセル シェーダーおよび頂点シェーダーと呼ばれるプログラムを実行でき、多数のピクセルを非常に高速に処理できます。
これがあなたのやろうとしていることとどのように適合するかはわかりませんが、CPU を使用する代わりに GPU を使用する方法があるかどうかを調べるのに時間をかける価値があるかもしれません。
OpenGL lib を使用して GPU 機能にアクセスできると思いますが、私はその専門家ではありません。