簡體   English   中英

OpenCV,從攝像機捕獲並保存到文件

[英]OpenCV, capturing from camera and saving to file

我想在openCV中構建一個簡單的應用程序,以從攝像機捕獲視頻並將其存儲到文件中。 問題是:

1-如何訪問相機的幀頻。 cvGetCaptureProperty()始終返回FPS值為零。

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(編輯):根據頁面底部附近的此站點 ,有必要致電

cvQueryFrame(capture);

首先,以獲得正確的屬性。 重試通話

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

然后

2:您可以使用cvWaitKey(毫秒)或只是睡眠。 您如何捕獲圖像,您的循環是什么樣的?

1-並非所有相機都會提供幀速率,這取決於其驅動程序支持的幀速率。

2-要捕獲10秒的視頻,只需計算出這是多少幀,而不是while(1)-它會一直運行,請執行以下操作。

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM