2017-01-10 18 views
7

Próbuję dowiedzieć się, jak ręcznie ustawić ekspozycję dla mojej kamery Faction w czasie rzeczywistym w programie opencv, który piszę w Pythonie. Używam opencv wersja 3.2.0, python 2.7 i działa na OSX El Capitan.Jak ręcznie ustawić ekspozycję na kamerę Factetime HD w Pythonie opencv 3.2.0 OSX El Capitan

Piszę program, który wykona zdjęcie z kamery co n sekund i zapisze go na dysku. Z tego, co widziałem w dokumentacji, chciałbym skorzystać z tej metody, aby ustawić ekspozycję w moim aparacie.

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

Po pewnym majsterkowania i rozglądać się w internecie, znalazłem byłem w stanie uzyskać dostęp do właściwości kamery w mojej wersji opencv przy użyciu następujących:

cv2.CAP_PROP_EXPOSURE

Co jest dziwne, jest że w mojej funkcji, która faktycznie przechwytuje fotografię, widzę, że domyślna wartość ekspozycji wynosi 0,0, a kiedy idę, aby zmienić ją za pomocą ustalonej metody, ekspozycja nie zmieniła się, gdy ponownie sprawdzę wartość. Wydaje się, że ustawiona metoda po prostu nie działa.

Oto moja funkcja:

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() 

Czy to tylko przypadek, że ta kamera nie jest kompatybilna z ręczną kontrolę ekspozycji? Czytałem również w jednym lub dwóch miejscach, że w OSX nie można ręcznie kontrolować właściwości kamer. Czy to tutaj jest nie tak? Czy używam nieprawidłowo ustawionej metody? Po prostu muszę być w stanie ręcznie kontrolować ekspozycję, ponieważ zdjęcia wykonane przez mój program są konsekwentnie niedoświetlone.

Dzięki, Brian

Odpowiedz

0

ja nie mam FacetimeHD Camera ale myślę, że trzeba ustawić tryb ekspozycji na ręczne (wyłączenie automatycznej ekspozycji) za pomocą

cam.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0)

Powiązane problemy