2010-12-03 5 views
1

openCVでカメラからビデオをキャプチャしてファイルに保存する簡単なアプリケーションを構築したいと考えています。問題は次のとおりです。OpenCV、カメラからキャプチャしてファイルに保存

1-カメラのフレームレートにアクセスする方法。 cvGetCaptureProperty()は常にFPS値0を返します。

2 - キャプチャが例えば10秒に撮影時間を制限するために、すなわち、どのようにしてくださいかかるいる時間を制御する方法を...ここに

は私のコード

void main(){ 

    CvCapture *capture = cvCaptureFromCAM(0); 
    int width = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); 
    int height = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); 
    CvVideoWriter *writer = cvCreateVideoWriter("myCamCapture.avi", -1, 30, cvSize(width, height)); 
    cvNamedWindow("d", CV_WINDOW_AUTOSIZE); 
    IplImage *frame = 0; 

    while(1) 
    { 
     frame = cvQueryFrame(capture); 
     cvShowImage("d",frame); 
     cvWriteFrame(writer, frame); 
     char c = cvWaitKey(30); 
     if(c == 27) break; 
    } 
} 

感謝です事前

答えて

1

1であなた(編集):this site near the bottom of the pageによると、

を呼び出す必要があります

まず、正しいプロパティを取得します。その後

int fps  = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); 

呼び出して再試行:あなたはcvWaitKey(ミリ秒)、または単に睡眠を使用することができます。どのようにイメージをキャプチャしていますか、ループはどのように見えますか?

+0

あなたは私がカメラからキャプチャしていFPS = 0、通知を得る....と私は –

+0

実行しようとしているコードを見るために私のポストの更新を見て書きました結果のファイルは、カム –

+0

で見たものより高いフレームレートを持っていますが、これは可能ですが、ソースフレームの一部は複数回保存されます。しかし、圧縮がこれを補うので、不利な点はありません。 – Atmocreations

0

1 - すべてのカメラが、ドライバがサポートしているフレームレートに依存しないフレームレートを供給するわけではありません。

2 - 10秒間のビデオをキャプチャするには、これが何フレームであるかを考えてください。これはwhile(1)の代わりに実行されます。私はコードの行を書くとき

// assumign you want 10seconds of 3fps = 300 frames total 
for (int iframe=0;iframe<300;iframe++) { 

} 
関連する問題