2017-06-28 2 views
0

J'implémente en C++ un client ONVIF pour piloter des caméras Onvif.Onvif - Facteur d'agrandissement

J'ai besoin d'obtenir le facteur d'agrandissement (x1 en zoom min, x200 en zoom max par exemple), mais jusqu'ici je n'arrive qu'à obtenir des valeurs PTZ (pan, tilt & zoom en pourcentage). Il est facile de transformer le panoramique et l'inclinaison de% en degrés, mais je ne sais pas comment calculer le facteur d'agrandissement.

J'ai regardé les fichiers WSDL mais je ne vois pas de quoi j'ai besoin.

Je serais bien avec:

  • soit un service de me dire directement le facteur d'agrandissement (par exemple x64)

  • le champ actuellement de vue de la lentille (par exemple 12 °) . Je peux facilement obtenir le champ max de vue et calculer le facteur d'agrandissement alors:

    magnification_factor = current_field_of_view/field_of_view_max

  • les min & champs max de vue de la caméra:

    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

Mais je ne vois rien dans l'interface.

Quelqu'un peut-il aider?

[edit: solution trouvée]

J'ai demandé à l'utilisateur de définir la valeur maximale du grossissement qui est toujours disponible dans les spécifications. Ensuite, je calculer le grossissement de courant à la formule:

current_mag = 1 + current_zoom * (max_mag - 1) 

Répondre

1

Le facteur zoom est une valeur comprise entre un minimum et maximum spécifié par chaque dispositif de données ZoomLimits dans le service de PTZ. Malheureusement, cela ne représente aucune valeur réelle et se situe souvent entre 0.0 et 1.0. Ce que vous pouvez faire est dans le périphérique WSDL, demande GetDeviceInformation et si vous connaissez les capacités de zoom réelles en valeurs réelles, vous pouvez les stocker et comparer avec le modèle/fabricant dans votre application.

+0

Oui, c'est plus ou moins ce que j'ai fait. J'ai demandé à l'utilisateur de définir la valeur maximale de l'agrandissement qui est toujours disponible dans les spécifications. Ensuite, je calcule le grossissement actuel avec la formule: current_mag = 1 + current_zoom * (max_mag - 1) –