cvCaptureFromCAM() / cvQueryFrame(): отключить автоматическую коррекцию изображения?

Я использую две функции OpenCV, упомянутые выше, для получения кадров с моей веб-камеры. Никаких дополнительных свойств не задается, просто работает с параметрами по умолчанию.

При чтении кадров в цикле я вижу, что изображение меняется, яркость и контрастность как бы настраиваются автоматически. Это определенно похоже на операцию OpenCV, потому что изображение, снятое камерой, не изменяется и постоянно горит.

Итак, как я могу отключить это автоматическое исправление? Я не мог найти свойство, которое, кажется, в состоянии сделать эту работу.


person Elmi    schedule 12.11.2012    source источник


Ответы (2)


Вы должны попробовать поиграть с этими тремя параметрами:

CV_CAP_PROP_BRIGHTNESS Яркость изображения (только для камер) CV_CAP_PROP_CONTRAST Контрастность изображения (только для камер) CV_CAP_PROP_SATURATION Насыщенность изображения (только для камер)

Попробуйте установить их все на 50. Также (если это не поможет) попробуйте изменить параметры захвата другой камеры из документация.

person ArtemStorozhuk    schedule 12.11.2012
comment
Это поднимает другой вопрос, на который я так и не нашел решения: каков допустимый диапазон этих значений? 0..100? - person Elmi; 13.11.2012
comment
Из источника opencv (linux) я обнаружил, что значения диапазона по умолчанию равны [0..255]. Но перед установкой параметра они получают этот диапазон из драйвера камеры - так что это зависит от вашей среды. А какие параметры пробовали? - person ArtemStorozhuk; 13.11.2012
comment
Я пытался установить для этих свойств 50, 5 и 1, но все это приводило к слишком яркому изображению, которое было совершенно непригодно для использования. Поэтому я решил позволить камере сделать свою автокоррекцию, а затем выполнить собственную коррекцию яркости/насыщенности/гаммы/RGB. Та же ситуация с CV_CAP_PROP_FRAME_WIDTH/_HEIGHT, я установил собственное разрешение камеры 1280x960, но все равно получаю изображения только 640x480. Так что, похоже, это не работает должным образом, по крайней мере, с v4l. - person Elmi; 14.11.2012

Чтобы ответить на это для себя: OpenCV здесь глючит или устарел.

  • получить изображения в родном разрешении камеры вроде бы невозможно, они всегда 640х480; также принуждение его к другому значению путем установки свойств ширины и высоты ничего не меняет
  • отключить автоматическую коррекцию изображения вроде бы невозможно, упомянутые выше свойства вроде бы не работают
  • свойства яркости/контрастности, похоже, тоже не работают - или, по крайней мере, я не смог найти для них хороших значений, или автоматическая коррекция изображения всегда отменяет их

Подводя итог: я бы не рекомендовал использовать OpenCV для более расширенного захвата изображений.

person Elmi    schedule 11.04.2013