禁用视频输入库或OpenCV中的自动聚焦

时间:2012-02-08 10:33:47

标签: image-processing opencv computer-vision

我正在使用视频输入库从网络摄像头获取帧。我想用C代码设置这台相机的FOCUS。

相机启用了 AUTO FOCUS 。没有办法禁用自动对焦并设置特定的焦点值

此致 萨利赫......

4 个答案:

答案 0 :(得分:11)

如果您使用OpenCV 3.1.0-dev版本和Python 2.7.5,以下代码剪辑应该可以帮助您;)

cap = cv2.VideoCapture(1) # my webcam
cap.set(3, 1280) # set the resolution
cap.set(4, 720)
cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) # turn the autofocus off

使用我的Logitech HD Pro网络摄像头C920工作正常。 cv2中还有许多其他很酷的控制功能,如cv2.CAP_PROP_BRITHNESScv2.CAP_PROP_CONTRAST。 看看自动完成向您显示的内容;)

答案 1 :(得分:5)

你试过这个:https://stackoverflow.com/a/1718009/7531它要求你使用directshow,但这应该是可能的。

否则,您是否看过OpenCV documentation for CameraCapture。有关摄像机参数的部分显示了 - 通常 - 您控制摄像机参数,快速查看videoinput.h应该显示自动对焦的参数。 This is a complete example以这种方式设置自动对焦。

IAMCameraControl是用于控制参数的Windows界面。

请注意,根据您使用的网络摄像头和/或特定固件版本,可能无法完全控制对焦/自动对焦。

答案 2 :(得分:2)

我已经为几天的情侣搜索了这个问题,并尝试了视频输入库和directshow。 如果您只想在opencv中设置一次(手动)相机参数,我找到的最简单的方法是:

VideoCapture cap(0);
cap.set(CV_CAP_PROP_SETTINGS, 1);

它将弹出一个窗口供您设置参数。足以禁用自动对焦。

这种方法的不便之处在于,如果你想通过程序控制焦距,它就不能这样做。

答案 3 :(得分:1)

您正在寻找的功能是相机和驱动程序特定的。 The OpenCV camera property controls仅提供非常基本的参数 通过OpenCV进行调用没有通用的方法。

要做到这一点,而不是通过OpenCV,您可以执行以下操作之一: