c++ - Onvif - 获取放大倍数

标签 c++ camera wsdl onvif

我正在用 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/

相关文章:

c++ - 使用 Ninja 使用 CMake 构建的 Unicode MFC 应用程序中 Unresolved WinMain 错误

iOS 13 图像捕捉 API 用于访问外部相机的文件系统?

android - 在牛轧糖中从相机拍摄时图像未加载

javascript - THREE.js 正交相机缩放到鼠标点

ssl - 如何为 javax.xml.ws.Service 配置 SSL 套接字?

java - 将 JAR 从编译更改为提供时出现 Servlet 错误

c++ - 防止 xml 炸弹 XercesDOMParser - C++

以指针为键的 C++ 映射。内存管理

c++ - 无法使 C++ 中的私有(private)方法返回指向私有(private)嵌套类的指针

java - SunCertPathBuilderException => 带有证书的 Maven JAXB2 生成