我想弄清楚如何在我用 Python 编写的 opencv
程序中为我的 Facetime 高清摄像头手动设置曝光。我正在使用 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 方法更改它时,曝光并没有改变,当我再次检查该值。看起来 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方法不当?我真的需要能够手动控制曝光,因为我的程序拍摄的照片一直曝光不足。
谢谢, 布莱恩
最佳答案
我没有 FacetimeHD 摄像头,但我想您需要使用
将曝光模式设置为手动(禁用自动曝光)cam.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0)
关于python - 如何在 Python opencv 3.2.0 OSX El Capitan 中手动设置 Facetime 高清摄像头的曝光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41578617/