如何在Python opencv 3.2.0 OSX El Capitan

时间:2017-01-10 21:20:15

标签: python opencv computer-vision osx-elcapitan opencv3.0

我正在尝试弄清楚如何在我用Python编写的opencv程序中为我的Facetime HD相机手动设置曝光。我正在使用opencv版本3.2.0,python 2.7,并在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方法不正确?我真的需要能够手动控制曝光,因为我的程序拍摄的照片一直曝光不足。

谢谢, 布赖恩

1 个答案:

答案 0 :(得分:0)

我没有FacetimeHD相机,但我猜您需要使用

将曝光模式设置为手动(禁用自动曝光)

cam.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0)