Question

Je suis actuellement impliqué dans un projet où il serait utile d'afficher des points géographiques comme des superpositions au-dessus d'un VIDEO élément (taille 512x288).

La VIDEO L'élément contient une diffusion en direct, et j'ai également un flux en temps réel de roulement, de latitude, de longitude et d'altitude qui est introduit dans le site en tant que variables JavaScript.

J'ai également un éventail de POI (points d'intérêt) qui est inclus dans le site. Les POI sont dans le format suivant:

var points = [['Landmark name', 'latitude', 'longitude'], […]];

Toutes les cinq secondes environ, je veux parcourir le tableau de POI et vérifier si l'un d'entre eux est dans la fenêtre actuelle de la vidéo - et si vrai, recouvrez-les en plus VIDEO élément.

Quelqu'un pourrait-il me pointer dans la bonne direction quant à ce que je devrais regarder? Je suppose que je dois cartographier les points vers un plan 2D en utilisant la projection par exemple Mercator.

Mais je suis un peu perdu quand il s'agit de cartographier la position relative des pixels du POI à la vidéo.

Au plaisir d'obtenir des conseils!

Était-ce utile?

La solution

Après avoir fait cela auparavant, l'élément le plus critique est de déterminer avec précision le champ de vision de la caméra (au moins au centième de degré) dans la direction verticale ou horizontale. Ensuite, utilisez le rapport d'aspect (512/288 = 1,78) de la vidéo pour déterminer l'autre angle (si nécessaire) en utilisant la formule atan (ne faites pas l'erreur commune de multiplier le champ de vision vertical par le rapport d'aspect pour obtenir le horizontal Champ de vision. Le champ de vision est angulaire, le rapport d'aspect est linéaire). Pensez-y en termes de configuration d'une caméra, par exemple, dans OpenGL, sauf que votre appareil photo est dans le monde réel. Au lieu de choisir un champ de vue et une orientation de la caméra, vous devrez le mesurer.

Vous aurez besoin de connaître l'attitude de l'appareil photo (Pan / Tilt ou Pitch / Roll / YAW) afin de superposer correctement les graphiques.

Vous n'aurez pas besoin d'une projection Mercator. Je suppose que le champ de vision de la caméra est relativement petit (c'est-à-dire 40 degrés environ), vous pouvez donc généralement supposer que la surface projetée est un rectangle (techniquement, c'est un petit patch d'une sphère).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top