Я внедряю в 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-увеличение)
коэффициент увеличения = current_field_of_view / field_of_view_max
Но я не вижу ничего из этого в интерфейсе.
Может кто-нибудь помочь?
[править: решение найдено]Я попросил пользователя установить максимальное значение увеличения, которое всегда доступно в спецификации. Затем я рассчитываю текущее увеличение по формуле:
current_mag = 1 + current_zoom * (max_mag - 1)
Коэффициент масштабирования — это значение между минимальным и максимальным значением, указанным каждым устройством в данных ZoomLimits в службе PTZ. К сожалению, это не должно представлять какую-либо ценность реального мира и часто находится между 0,0 и 1,0.
Что вы можете сделать, так это в устройстве WSDL, запросить GetDeviceInformation и, если вы знаете реальные возможности масштабирования в реальных значениях, вы можете сохранить их и сравнить с моделью / производителем в вашем приложении.
Других решений пока нет …