我需要手动更改相机的焦点。手动表示使用代码

时间:2015-04-22 12:07:34

标签: c++ windows opencv sdk camera

我需要手动(使用代码)更改相机的焦点。 实际上我需要使用c ++程序来改变罗技凸轮的焦点。 作为我的知识,没有办法使用opencv控制相机。我听说Windows sdk允许使用代码更改相机的焦点。任何人都可以帮我这样做吗?

罗技相机具有自动变焦选项。我需要编写一个程序来通过代码更改缩放。

谢谢。 最好的问候

1 个答案:

答案 0 :(得分:0)

一种方法(至少在Linux上)是Video for linux。

打开一个id为dev_id为

的凸轮
cv::VideoCapture cap =  VideoCapture( dev_id+CV_CAP_V4L2);

然后可以设置焦点:

/// turn of autofocus
struct v4l2_control ctrl;
ctrl.id = V4L2_CID_FOCUS_AUTO;
ctrl.value = 0;

int ret = ioctl(dev, VIDIOC_S_CTRL, &ctrl);
if (ret < 0) {
    printf("unable to disable AutoFocus %s (%d).\n",
           strerror(errno), errno);
    return false;
}

/// set focus manually
ctrl.id = V4L2_CID_FOCUS_ABSOLUTE;
ctrl.value = focus;

ret = ioctl(dev, VIDIOC_S_CTRL, &ctrl);
if (ret < 0) {
    printf("unable to set absolute Focus %s (%d).\n",
           strerror(errno), errno);
    return false;

这与L920完美配合。