2017-01-10 13 views
7

Я пытаюсь выяснить, как вручную установить экспозицию для моей камеры Facetime HD в программе opencv, которую я пишу на Python. Я использую opencv версии 3.2.0, python 2.7 и работает на OSX El Capitan.Как вручную установить экспозицию на камеру Facetime HD в Python opencv 3.2.0 OSX El Capitan

Я пишу программу, которая будет снимать с веб-камеры каждые n секунд и записывать ее на диск. Из того, что я видел в документации, я хотел бы использовать этот метод для установки экспозиции на моей камере.

cv2.VideoCapture.set(CV_CAP_PROP_EXPOSURE, value) → retval

После некоторого лужения и озираясь в Интернете, я обнаружил, что я был в состоянии получить доступ к этой собственности камеры в моей версии opencv, используя следующие:

cv2.CAP_PROP_EXPOSURE

Что странно, что в моей функции, которая фактически фиксирует фотографию, я вижу, что значение экспозиции по умолчанию равно 0.0, а затем, когда я иду, чтобы изменить ее с помощью установленного метода, экспозиция не изменилась, когда я снова проверю значение. Похоже, что метод set просто не работает.

Вот моя функция:

def takePhoto(): 
    cam = cv2.VideoCapture(0) 
    print(cam.get(cv2.CAP_PROP_EXPOSURE)) #this prints out 0.0 
    cam.set(cv2.CAP_PROP_EXPOSURE, 0.5) 
    print(cam.get(cv2.CAP_PROP_EXPOSURE)) #this also prints out 0.0, despite the use of set() in the line above 
    s, im = cam.read() # captures image 
    cv2.imwrite("test.jpg",im) # writes image test.jpg to disk 
    cam.release() 

Это как раз тот случай, что эта камера не совместима с ручным управлением экспозицией? Я также прочитал в одном или двух местах, что opencv в OSX не позволяет вручную контролировать свойства камер. Это то, что здесь не так? Или я неправильно использую метод set? Мне просто нужно иметь возможность вручную контролировать экспозицию, так как фотографии, сделанные моей программой, постоянно недоэкспонированы.

Спасибо, Brian

ответ

0

Я не имею FacetimeHD камеры, но я думаю, вы должны установить режим экспозиции в ручной режим (отключить автоматическую экспозицию) с помощью

cam.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0)