2017-06-22 1 views
1

MacOSXのOpenCV 2.4.13.2でC APIを使用してビデオを作成できないC++ APIが現在OpenCVに好まれるようになって以来、古くなっているチュートリアルの紹介がありました。私はチュートリアルで2日間過ごしました。特にここで例を再現しようとしていますhttp://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00073000000000000000MacOSXのOpenCV 2.4.13.2でC APIを使用してビデオを開くことができない

私はカメラを起動して "out.avi"というファイルに録音と書き込みを開始できますVLCまたはQuicktimeで開くことができません。

これは私の全体のプログラムです:

#include <stdio.h> 
#include <cv.h> 
#include "highgui.h" 
#include "cxcore.h" 

int main(int argc, char **argv) { 
    int key = 0; 
    int i = 0; 
    CvCapture *capture = 0; //The camera 
    IplImage* frame = 0; //The images you bring out of the camera 

    capture = cvCaptureFromCAM(0); //Open the camera 
    if (!capture){ 
    printf("Could not connect to camera\n"); return 1; 
    } 

    cvQueryFrame(capture); 
    double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); 
    int frame_height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); 
    int frame_width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); 

    cvNamedWindow("win", CV_WINDOW_AUTOSIZE); 
    cvMoveWindow("win", 100, 100); 

    CvVideoWriter *writer = cvCreateVideoWriter("out.avi", CV_FOURCC('D', 'I', 'V', 'X'), fps, cvSize(frame_width, frame_height), 1); 
    if (!writer) { 
    printf("CvVideoWriter failed\n"); 
    exit(1); 
    } 

    IplImage *img = 0; 
    int nframes = 1000; 

    for (i = 0; i < nframes; i++) { 
    if (!cvGrabFrame(capture)) { 
     printf("Unable to grab frame!\n"); 
     exit(0); 
    } 
    img = cvRetrieveFrame(capture, 0); 
    cvWriteFrame(writer, img); 
    cvShowImage("win", img); 
    key = cvWaitKey(20); 
    } 

    return 0; 
} 

私が間違っているのか?前もって感謝します。

+1

あなたは解放する必要はありませんか?私。 @videoWriter(&writer); ' –

+0

@AlexanderReynoldsはいVideoWriterを解放してウィンドウを破壊する必要がありますが、小さなプログラムでは、ビデオが完成した後にリリースされるので問題ありません。問題は、 "out.avi"を書き込んだ後にファイルを再生できないことです。私が再生できる他のaviファイルも再生できます。 – Sabzo

+0

作成プログラムが終了したときの 'out.avi'ファイルのサイズは? – user3629249

答えて

1

C++ライブラリで未処理のObjective C例外が原因でエラーが発生しました。このOpenCVチケットhttps://github.com/opencv/opencv/issues/8305のエラーを文書化し、プルリクエストを送信する手助けをしました。 OpenCV 2.4ブランチの最新バージョンをチェックすると、上記の問題が解決されるようになりました。

関連する問題