Как установить камеру FPS в OpenCV? CV_CAP_PROP_FPS - подделка

Как установить камеру 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;
}

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

Ответ 1

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

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

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

Камера - это глаз PS3

Ответ 2

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

Ответ 3

проверить 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/

Ответ 4

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

sudo apt-get install libv4l-dev

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

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

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

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