OpenCV, захват с камеры и сохранение в файл - PullRequest
1 голос
/ 03 декабря 2010

Я хочу создать простое приложение в 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;
    }
}

заранее спасибо

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

1 (Изменить): Согласно этому сайту в нижней части страницы , необходимо позвонить

cvQueryFrame(capture);

сначала, чтобы получить правильные свойства. Повторить звонок

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

после

2: Вы можете использовать cvWaitKey (миллисекунды) или просто перевести в спящий режим. Как вы снимаете изображения, как выглядит ваш цикл?

0 голосов
/ 03 декабря 2010

1 - Не все камеры обеспечивают частоту кадров, это зависит от того, что поддерживает их драйвер.

2 - Для захвата 10 секунд видео просто определите, сколько это кадров, и вместо того, чтобы (1) - который работает вечно, сделать что-то вроде.

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...