我正在用 C++ 实现 ONVIF 客户端以驱动 Onvif 相机。
我需要获得放大倍数(例如,最小变焦为 x1,最大变焦为 x200),但到目前为止,我只能设法获得 PTZ 值(平移、倾斜和缩放百分比)。将平移和倾斜从 % 转换为度数很容易,但我不知道如何计算放大系数。
我查看了 WSDL 文件,但没有看到我需要的内容。
我愿意:
直接告诉我放大倍数的服务(例如 x64)
镜头的当前视野(例如 12°)。我可以轻松获得最大视野并计算放大倍数:
放大倍数 = current_field_of_view/field_of_view_max
相机的最小和最大视野:
current_field_of_view = min_field_of_view + (max_field_of_view - min_field_of_view)*(1-zoom) magnification_factor = current_field_of_view/field_of_view_max
但我在界面中没有看到任何内容。
有人可以帮忙吗?
[编辑:找到解决方案]
我已经要求用户设置规范中始终可用的放大倍率的最大值。然后我用公式计算当前的放大倍率:
current_mag = 1 + current_zoom * (max_mag - 1)
最佳答案
缩放系数是 PTZ 服务中每个设备在 ZoomLimits 数据中指定的最小值和最大值之间的值。不幸的是,这不一定代表任何现实世界的值(value),通常在 0.0 和 1.0 之间。
您可以在设备 WSDL 中请求 GetDeviceInformation,如果您知道真实值中的实际缩放功能,您可以存储它们并与应用程序中的模型/制造商进行比较。
关于c++ - Onvif - 获取放大倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44806619/