12

我正在尝试使用网络摄像头进行计算机视觉(模型是 Hercules Dualpix)。我知道这不是理想的相机,但我别无选择。

问题是自动对焦使校准相机变得困难/不可能。任何人都知道禁用自动对焦功能的方法。或者,如果有人想处理它并使用自动对焦校准相机。

4

3 回答 3

11

Hercules 相机符合 UVC,因此它们应该与 DirectShow 接口IAMCameraControl 一起使用。您可以将焦点设置为特定值,并使用标志设置您不希望它是自动的。您可以使用IAMCameraControl::Get轮询当前状态,因为并非所有相机都支持关闭焦点。

IAMCameraControl *pCameraControl; 
HRESULT hr; 
hr = pFilter->QueryInterface(IID_IAMCameraControl, (void **)&pCameraControl); 
if (hr == S_OK) {
  long defaultFocusValue;
  hr = pCameraControl->GetRange(CameraControl_Focus,
                                NULL, // min
                                NULL, // max
                                NULL, // minstep
                                &defaultFocusValue, // default
                                NULL); // capflags
  hr = pCameraControl->Set(CameraControl_Focus, // property
                           defaultFocusValue, // value
                           CameraControl_Flags_Manual); 
} 

焦点有一个由每个相机单独定义的范围,因此您应该按所示查询它以找到默认值和最小值,如果需要,最大值。在此示例中,pFilter它是指向您从 DirectShow 获得的输入过滤器的指针。您可以通过枚举设备并找到您想要的设备来获得它。

于 2009-11-11T20:56:24.743 回答
2

尝试使用uvcdynctrl 其中 -l 标志将列出您的功能和 -s 可用于设置任何功能 http://manpages.ubuntu.com/manpages/natty/man1/uvcdynctrl.1.html

于 2012-03-19T20:12:52.333 回答
0

在OpenCV和 Python的帮助下,您可以非常轻松地做到这一点:

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

我使用 OpenCV 3.1.0-dev、Python 2.7.5 和 Logitech HD Pro Webcam C920

于 2016-07-14T18:25:21.017 回答