Понимание скорости захвата камеры с помощью OpenCV

Это, вероятно, открытый вопрос. Я написал приложение opencv, которое захватывает канал с двух внешних камер, подключенных к компьютеру. Захват с обеих камер идет параллельно на 2 разных потоках. Этот модуль записи записывает кадры в видеофайл, который затем обрабатывается. Следующий код находится внутри каждой функции потока:

    CvCapture *capture =cvCaptureFromCAM(indexOfCamera);
    if(!capture) return;

    CvSize sz =cvGetSize(cvQueryFrame(capture));
    cvNamedWindow("src");
    CvVideoWriter *writer =cvCreateVideoWriter((char*) p, CV_FOURCC('L','A','G','S'), 20, sz);
     if( !writer ) {
        cvReleaseCapture( &capture );
        return;
    }
     IplImage *frame;
     int frameCounter =0;
     while(true){
        QueryPerformanceCounter(&sideCamCounter);
        frame =cvQueryFrame(capture);
        if(!frame)break;
        //Store timestamp of frame somewhere
        cvShowImage("src", frame);
        cvWriteFrame(writer, frame);

        int c=cvWaitKey(1);
        if((char)c ==27)break;
        ++frameCounter;
     }
    cvReleaseVideoWriter(&writer);
    cvReleaseCapture(&capture);
    cvDestroyAllWindows();

Я использую две камеры: A - Microsoft HD-6000 Lifecam для ноутбуков и B - Logitech сфера AF камера. Камера A снимает со скоростью около 16-20 кадров в секунду (достигает нескольких кадров в секунду во время нескольких записей), а камера B снимает со скоростью около 10-12 кадров в секунду.

Мне нужна более высокая скорость захвата, чтобы иметь возможность захватывать движения в реальном времени. Я понимаю, что я буду ограничен скоростью / скоростью захвата камеры, но помимо этого, какие другие факторы будут влиять на скорость захвата - например, нагрузка на систему (память и процессор), используемый API? Я открыт для изучения вариантов. Благодарю.

1 ответ

  1. Попробуйте установить разные свойства камеры - http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html, вероятно, наиболее интересными для вас будут... FPS:) Обратите внимание, что это не всегда работает нормально ( Как настроить FPS камеры в OpenCV? CV_CAP_PROP_FPS - подделка), но дайте ему шанс, может быть, это поможет вам. Также вы можете попытаться установить меньшее разрешение изображения.

  2. Если вам не нужно - не показывайте изображение.

  3. Вы можете попытаться захватить кадры в одном потоке и обработать в другом.
  4. Подключайте камеры напрямую к компьютеру - не используйте USB-концентратор.
  5. API используется

Я не думаю, что это поможет, но если вы хотите, вы можете попробовать использовать другой API - OpenCV на Mac не открывает веб-камеру USB

Другие вопросы по тегам