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