[英]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.