Linux マシンでOpenCVを使用してビデオを書いています。Windows マシンでOpenCVを使用して同じビデオを読みたいです。openCVで提供されている標準コーデックを使用してこれを行うことはできません。
2 つのプラットフォーム間でビデオを読み書きする方法を誰か提案できますか?
Linux マシンでOpenCVを使用してビデオを書いています。Windows マシンでOpenCVを使用して同じビデオを読みたいです。openCVで提供されている標準コーデックを使用してこれを行うことはできません。
2 つのプラットフォーム間でビデオを読み書きする方法を誰か提案できますか?
OpenCV Wiki は、この問題に直接対処しています。http://opencv.willowgarage.com/wiki/VideoCodecsと、具体的には「互換性リスト」という見出しを参照してください。
残念ながら、3 つのプラットフォームすべて (Linux、Windows、OSX) でサポートされているコーデックは「DIB」「I420」と「IYUV」のみです。これらはすべて圧縮されていないビデオ コーデックであるため、ファイル サイズが非常に大きくなります。
wiki には、2 つのプラットフォームでは動作するが 3 つすべてでは動作しない可能性のある試用可能なコーデックもいくつかリストされています。
圧縮されていないビデオ ファイルを使用する場合は、VirtualDubなどのプログラムを使用して、Windows マシン上でファイル サイズが小さいものに変換できます。
編集:参考までに、Windows では、Motion-JPEG で OpenCV 出力を行い、Directstream コピー モードで VirtualDub を使用して、映画のインデックスのバグを修正するファイルを再保存します。これらの M-JPEG ビデオ ファイルは、Mac および Windows でデフォルトで再生されます。
ビデオをOpenCVに読み込もうとしている場合、まずビデオを Cinepak に変換し (仮想吹き替え、quicktime などを使用)、次にそれを OpenCV にフィードします。私が Cinepak を使用しているのは、何らかの理由で Cinepak エンコーダーが MJPEG エンコーダーよりも普及しているように見えるからです。
あなたが言及したように、問題はOpenCVにあるとは思いません。コーデックにあると思います。また、OpenCV にはコーデックが付属しているとは思いません... Windows に適切なコーデックがインストールされていることを再確認してください。
ビデオコーデックに関するドキュメントを見ましたか?