2

作成中のプログラムの .avi ビデオ ファイルを読み込みたいです。ファイルの場所を として保存していstringます。C++ で .avi ファイルを使用するための優れたチュートリアルはありますか? 通常のファイルと同じですか?

私は以前に尋ねたSOの質問をより詳細にしていますが、ここで私がやりたいことは次のとおりです。

顔を検出するプログラムを作成しています(OpenCVを使用)現在、フレーム上の各顔を検出し、フレームを画像とCvRec顔のとして返すビデオプロセッサプログラムが提供されています。これらの顔をテストして、それらがすべて実際に顔であることを検証したいと思います。

すべての顔を (テストして) 取得したら、画像を取得して一緒にテストします。サイズと距離の変化について、各フレームの顔をテストします。顔が 2 秒間のフレーム長でこれを通過する場合、顔を切り取り、各フレームの被写体にします。

各フレームがトリミングされた後、ユーザーのために新しいビデオ ファイルを保存したいと考えています。

うまくいけば、それは役に立ちます。誰かがより良い説明が必要な場合は、私に知らせてください。

4

2 に答える 2

5

まず、背景を少し。

AVIとは?
AVIはAudio Video Interleaveの略です。これは、 RIFF (Resource Interchange File Format)の特殊なケースです。AVI は Microsoft によって定義されており、オーディオ/ビデオ データの最も一般的な形式です。

avi ファイルを読み込んで、圧縮されたビデオ フレームをデコードするとします。AVI ファイルは他の通常のファイルと同様に、fread() ( C の場合) またはiostream ( C++の場合) を使用して avi ファイルを開き、その内容を読み取ることができます。ただし、avi ファイルの内容は圧縮形式のビデオ フレームです。圧縮により、より大きなサイズのビデオ コンテンツを少ないメモリ スペースで効率的に圧縮できます。この圧縮データを理解するには、エンコードされたデータ形式をデコードする必要があります。次に、フレームを抽出してデコードします。この未加工のビデオ データがビデオ デバイスに供給されると、ビデオ形式で表示されます。

于 2011-05-05T15:08:22.060 に答える
4

あなたはOpenCV内にとどまっているようですので、物事は簡単です。OpenCV が適切にコンパイルされている場合、io/coding/decoding を他のライブラリに委任できます。たとえばQuicktimeなどですが、ffmpegを使用するのが最善です。フレームごとにビデオを提供する OpenCV API を使用して、すべてを開き、読み取り、デコードします。

OpenCV が ffmpeg サポートでコンパイルされていることを確認してから、AVI ファイルの読み取り/書き込み方法に関する OpenCV チュートリアルを読んでください。とても簡単です。

ただし、OpenCV を ffmpeg サポート付きでビルドするのは難しいかもしれません。現在のバージョンで ffmpeg を実行できない場合は、古いバージョンの OpenCV に切り替えることをお勧めします。

個人的には、自分でビデオを読んだり、タスクを OpenCV に委任したりすることに時間を費やしませんでした。それが本来の使い方です。

于 2011-05-05T15:16:03.977 に答える