※ ChatGPTを利用し、要約された質問です(原文:OpenCvSharpでの動画の書き出しについて)
OpenCvSharpで動画の書き出しについて
このQ&Aのポイント
OpenCvSharpを使用してUSBカメラからの画像を動画ファイルに保存するプログラムを作成する方法についての質問です。
保存された動画ファイルをWindows Media Playerで再生しようとすると、ファイルが破損しているか、サポートされていない形式であると表示されます。
コーデックはインストール済みであることを確認しましたが、問題は解消されません。解決策はありますか?
現在USBカメラからの画像を動画ファイルに保存するプログラムを作ろうとしています。
開発環境はVS2008のC#+OpenCvSharpでやろうとしています。
動画ファイルの保存する所までは出来たのですが、
保存されたファイルをWMPで見ようとすると、ファイルが破損しているか、ファイル形式がサポートされていませんと表示されます。
コーデックはインストール済みです。
そこでコーデックをチェックするアプリ(MMname2)を使って出来たファイルを調べると、下記のような情報が表示されます。
下記にはあがっていませんが、録画時間の値の表示がりません。
正常なファイルの場合は録画時間の値が表示されます。
MMname2 v2.5.4 2007/01/07版 (DB 20070711) - Windows XP Service Pack 3 (5.1.2600)
■基本情報
ファイル:test.avi
形式:AVI / サイズ:2,795,228 (2.66 MB) / 再生時間:
ファイル整合性:moviチャンクがない
■映像情報 (ストリーム数 1)
1)コーデック:XviD / Code:XVID/XVID / 略号:XviD / 640x480 24bit 15fps
■音声情報 (ストリーム数 0)
■字幕情報 (ストリーム数 0)
■コメント情報 (情報数 1)
1)ISFT Software Lavf51.12.1
■DirectShow情報
スプリッタ:
映像デコーダ:
音声デコーダ:
ステータス:オートメーション エラーです。
コードのサンプルそのままなのですが、
なにか環境が足りないのでしょうか?
私の環境だけなのでしょうか?
なにか情報がありましたらお願いします。
// (1)カメラに対するキャプチャ構造体を作成する
using (CvCapture capture = CvCapture.FromCamera(0))
{
// (2)キャプチャサイズを取得する(この設定は,利用するカメラに依存する)
int width = capture.FrameWidth;
int height = capture.FrameHeight;
// (3)ビデオライタ構造体を作成する
using (CvVideoWriter vw = new CvVideoWriter("cap.avi", "XVID", 15, new CvSize(width, height)))
using (CvFont font = new CvFont(FontFace.HersheyComplex, 0.7, 0.7))
using (CvWindow window = new CvWindow("Capture", WindowMode.AutoSize))
{
// (4)カメラから画像をキャプチャし,ファイルに書き出す
for (int num = 0; CvWindow.WaitKey(10) != '\x1b'; num++)
{
IplImage frame = capture.QueryFrame();
string str = string.Format("{0}[frame]", num);
frame.PutText(str, new CvPoint(10, 20), font, new CvColor(0, 255, 100));
vw.WriteFrame(frame);
window.ShowImage(frame);
}
}
}
お礼
OpenCV 2.0用のライブラリを使うことで、保存した動画ファイルが再生することが出来ました。 ありがとうございました。