gpt4 book ai didi

c++ - 如何以编程方式禁用网络摄像头的自动对焦?

转载 作者:IT老高 更新时间:2023-10-28 23:17:40 25 4
gpt4 key购买 nike

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

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

最佳答案

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);
}

Focus 有一个由每个相机单独定义的范围,因此您应该如图所示查询它以找到默认值和最小、最大(如果需要)。在此示例中,pFilter 是指向您从 DirectShow 获得的输入过滤器的指针。您可以通过 enumerating the devices 获取并找到您想要的。

关于c++ - 如何以编程方式禁用网络摄像头的自动对焦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1717780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com