Как установить FPS камеры в OpenCV?CV_CAP_PROP_FPS - подделка - PullRequest
15 голосов
/ 12 августа 2011

Как настроить камеру FPS?

Может быть cvSetCaptureProperty (cameraCapture, CV_CAP_PROP_FPS, 30);

Но это возвращение HIGHGUI ERROR: V4L2: невозможно получить свойство (5) - неверный аргумент

Поскольку в highgui / cap_v4l.cpp нет реализации

static int icvSetPropertyCAM_V4L( CvCaptureCAM_V4L* capture,
                                  int property_id, double value ){
    static int width = 0, height = 0;
    int retval;

    /* initialization */
    retval = 0;

    /* two subsequent calls setting WIDTH and HEIGHT will change
       the video size */
    /* the first one will return an error, though. */

    switch (property_id) {
    case CV_CAP_PROP_FRAME_WIDTH:
        width = cvRound(value);
        if(width !=0 && height != 0) {
            retval = icvSetVideoSize( capture, width, height);
            width = height = 0;
        }
        break;
    case CV_CAP_PROP_FRAME_HEIGHT:
        height = cvRound(value);
        if(width !=0 && height != 0) {
            retval = icvSetVideoSize( capture, width, height);
            width = height = 0;
        }
        break;
    case CV_CAP_PROP_BRIGHTNESS:
    case CV_CAP_PROP_CONTRAST:
    case CV_CAP_PROP_SATURATION:
    case CV_CAP_PROP_HUE:
    case CV_CAP_PROP_GAIN:
    case CV_CAP_PROP_EXPOSURE:
        retval = icvSetControl(capture, property_id, value);
        break;
    default:
        fprintf(stderr,
                "HIGHGUI ERROR: V4L: setting property #%d is not supported\n",
                property_id);
    }

    /* return the the status */
    return retval;
}

Как это решить?

Ответы [ 4 ]

16 голосов
/ 17 апреля 2014

используя обертки python для opencv, у меня получилось сослаться на переменную как:

cap = cv2.VideoCapture(1)
cap.set(cv2.cv.CV_CAP_PROP_FPS, 60)

Я использую python 2.7.3 и opencv 2.4.8

Камератакое PS3 Eye

6 голосов
/ 10 июля 2015

CV_CAP_PROP_FPS - это НЕ подделка. См. Cap_libv4l.cpp ( 1 ) в репозитории OpenCV github. Ключ должен убедиться, что вы используете libv4l поверх v4l при настройке OpenCV. Для этого перед запуском cmake установите libv4l-dev

sudo apt-get install libv4l-dev

Теперь при настройке OpenCV с помощью cmake, включите опцию, WITH_LIBV4L. Если все идет хорошо, в состоянии конфигурации вы увидите что-то похожее на ниже

V4L / V4L2: Использование libv4l1 (версия) / libv4l2 (версия)

И затем, при создании кода OpenCV, вам нужно будет связать с libv4l1 / libv4l2 / libv4lconvert.

Произвольные значения FPS при выбранных разрешениях не должны поддерживаться вашей веб-камерой. Вы можете проверить поддерживаемые разрешения / fps с помощью графических инструментов, таких как cheese, или таких команд, как lsusb ( 2 )

.
6 голосов
/ 12 августа 2011

Не знаю, так ли это до сих пор, но некоторое время назад, примерно через полтора года, я столкнулся именно с этой проблемой.Я связался с разработчиком OpenCV, и он сказал мне, что доступ и возможность изменять некоторые свойства захвата еще не реализованы, а некоторые другие просто работают для определенных типов камер.Я наконец взглянул на libdc1394 (работающий в linux) и сделал несколько функций, которые преобразовывали данные, полученные libdc1394, в IplImages из OpenCV.Это не было такой сложной задачей.

3 голосов
/ 21 июня 2012

проверьте руководство opencv2.4, захват видео намного лучше, чем раньше,

-> set (CV_CAP_PROP_FPS, 30); работает для меня большую часть времени. но немного низкая эффективность.

на тот случай, если вам не понравится новый opencv2.4 и вы все еще хотите управлять своей камерой. проверьте lib видеовхода здесь. он работает хорошо и использует функции DirectShow. http://www.aishack.in/2010/03/capturing-images-with-directx/ http://www.muonics.net/school/spring05/videoInput/

...