2017-01-10 289 views
7

我想弄清楚如何在我用Python編寫的opencv程序中爲我的Facetime高清攝像機手動設置曝光。我正在使用opencv版本3.2.0,python 2.7,並在OSX El Capitan上運行。如何在Python opencv 3.2.0上手動設置Facetime高清攝像機的曝光度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() 

難道只是這臺相機是不是有手動曝光控制兼容的情況?我還在一個或兩個地方看過在OSX中opencv不允許手動控制攝像機的屬性。這是什麼問題?還是我不恰當地使用set方法?我真的需要能夠手動控制曝光,因爲我的程序拍攝的照片始終曝光不足。

感謝, 布賴恩

回答

0

我沒有FacetimeHD攝像頭,但我猜你需要的曝光模式設置爲手動(禁用自動曝光)使用

cam.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0)

相關問題