1

Mandriva Linux 2009.1 で openCV を使用してビデオ ファイルを保存しようとしています。残念ながら、cvCreateVideoWriter は常に null を返しますが、両方のファイルと mpeg ファイルを表示して変更できます。つまり、cvCaptureFromCam、cvCaptureFromAvi、cvRetrieveFrame は機能しています。

このチュートリアルとこのコーデックページから可能なすべてのコーデックを試しました。また、圧縮されていない avi に対して 0 を、fourcc パラメーターの選択ボックスに対して -1 を試しましたが、選択肢が表示されず、何も起こりませんでした。isColor も 0 に変更しました。

また、作業ディレクトリへの書き込み権限も持っています。

関連するコード スニペットは次のとおりです。

    CvVideoWriter *writer = 0;
    int isColor = 1;
    int fps = 25;
    int frameW = 640;
    int frameH = 480;


    if( argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))
        capture = cvCaptureFromCAM( argc == 2 ? argv[1][0] - '0' : 0 );
    else if( argc == 2 ) {
        printf("argc == 2 :%s:\n", argv[1] );
        capture = cvCaptureFromFile( argv[1] );
    }

    cvInitSystem(argc,argv);

 writer = cvCreateVideoWriter("out.avi",CV_FOURCC('I','Y','U','V'),fps,cvSize(frameW,frameH),isColor);

何が問題なのですか?

4

2 に答える 2

1

私はあなたの投稿、ランスの返信、そしてそれに対するあなたのコメントを読み、そしてついに自分自身のための回避策を見つけ、その問題に苦しんでいるすべての人のためにいくつかのメモを追加することにしました。

最初に確認するのは、CMakeがFFmpegを使用してOpenCVを構築したかどうかです。これを行うための私の速くて恐ろしい方法はcmake、インストール中に書いたように、フラグとパラメーターを使用して実行することです。出力の最後に、インストールされるコンポーネントに関するログがあります。パラメータが実際のインストール中に使用されたものをコピーする場合、すでにインストールされているものに関する情報を取得します。

次に、Linuxシステムでコーデックの使用可能なエンコーダーとデコーダーを確認することをお勧めします。私はこれを使用して行いffmpeg -codecsます。

3番目の注意は、信頼できるプリミティブな引数が次のように設定されていることですcvCreateVideoWriter

"a0000.png"、0、fps、サイズ、0

fpsここに、sizeそれぞれfpsフィールドとframe_sizeフィールドの値を含む変数があります。あなたは画像の袋を手に入れるでしょう-ランス・リチャードソンとリックスがすでに述べたもの。

最後に、OpenCVがFFmpegで構築され、XVIDエンコーダーがインストールされている私のシステムでは、これらの引数を次のようにプラグインしますcvCreateVideoWriter

"/home/me/openCVOut/a.avi"、CV_FOURCC('X'、'V'、'I'、'D')、fps、size

そして最後に私が欲しいものを手に入れます。

私の答えがお役に立てば幸いです。

于 2012-06-29T11:28:32.373 に答える