Я пытаюсь выяснить, как вручную установить экспозицию для моей камеры 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