关于UVC PTZ功能

PTZ功能即缩放(Z),左右移动(P)和上下移动(T)功能,定义在相机终端描述符里面(Camera Terminal Descriptor ),如下图为终端描述符。

从描述符中可以知道,PTZ通过bmControls来控制,PTZ对应的是D9-D12,这里我们选择绝对控制,这里我觉得绝对控制好处理一点,不用记录上一次状态。所有我们只要在描述符中把D9和D11置为1即可。

描述符打开之后就可以接收到上层应用请求了。Z对应CT_ZOOM_ABSOLUTE_CONTROL,PT对应CT_PANTILT_ABSOLUTE_CONTROL

ZOOM必须要实现 GET_CU R, GET_MIN, GET_MAX, GET_RES, GET_INFO, GET_DEF请求,这里我们需要进行控制的话,还得支持SET_CUR。需要注意的是处理GET_INFO请求的时候返回的数据一定要正确,如不正确可能会接收不到UVC命令。GET_INFO请求值定义如下,一般我们支持GET和SET,GET_INFO的时候返回一个3就行了。

PT必须要支持GET_CUR, GET_MIN, GET_MAX, GET_RES, GET_INFO, GET_DEF请求,同理我们要能控制还得支持SET_CUR请求。

最近在给模块端添加这个功能的时候折腾了一段时间,zoom功能主要根据SET_CUR请求值对画面做相应处理就好,这里说下PT功能,PT功能需要注意下面几个点:
1.PT功能命令的数据长度为8个字节,低4字节为P(左右移动)数据,高4字节为T(上下移动)数据
2.数据以3600为单位,比如你想设置的移动范围为-10-10,那么实际返回给上层的值应该是-36000-36000。
3.PT两个功能对应一个指令,所以同一个请求实际上是请求两个功能数据,如处理GET_MAX请求时,我们需要把P功能的最大值放到低4字节,把T功能的最大值放到高4字节。
4.接收SET_CUR指令时需要区分是设置P、设置T还是PT都设置,当设置P时,高四个字节全是0,当设置T时,低4个字节全是0,其他值PT都设置。

我实现这两个功能的算法思路就是在每一帧图像中根据设置的PTZ值裁剪出一个框进行resize。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老吕丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值