Bonjour à tous - Je travaille sur ce projet depuis près de 3 jours maintenant et j'ai enfin élaboré une méthodologie pour importer des vidéos du drone DJI FPV dans Drone2Map dans le but de créer des orthomosaïques et d'autres projets 2D. Je n'ai trouvé aucune information ni littérature antérieure sur une méthodologie pour intégrer le drone DJI FPV dans le système Drone2Map, donc j'espère que cela pourra aider la prochaine personne cherchant une réponse à cette question. Je suis sûr qu'il existe de meilleures façons de faire ce que je vais détailler, et si c'est le cas, merci de me le faire savoir. De plus, si cette méthodologie peut être utile pour d'autres drones, merci de me le signaler. <\/P>
Avant de commencer, je voulais exposer quelques hypothèses\/précautions. Cette méthodologie a été développée uniquement pour convertir des vidéos prises à un angle nadir-à-oblique en images fixes géotaguées pouvant être importées dans Drone2Map. Elle nécessite un minimum de confort avec l'interaction en ligne de commande et l'édition de scripts python, quelques applications tierces en plus de Drone2Map, ainsi qu'une attention portée à votre altitude et aux timings pendant le vol (la lecture d'altitude du DJI FPV est constamment inexacte et inutile). Je suppose que, pour la plupart des gens, les images seront capturées à une hauteur constante au-dessus d'un sol plat(ish). Cela pourrait être une hypothèse incorrecte, mais c'est celle faite dans ce résumé. Pour que ce processus fonctionne, vous devez avoir le drone DJI FPV configuré pour enregistrer les données SRT.<\/EM> Ceci est activé par défaut, mais peut être activé dans le menu des paramètres système. Cette méthodologie nécessite également : VLC Media Player<\/STRONG>, Exif Tool<\/STRONG>, un logiciel d'édition de scripts <\/STRONG>(j'utilise Visual Studio).<\/P>Vous pouvez trouver VLC Media Player ici : https:\/\/www.videolan.org\/vlc\/download-windows.html<\/A><\/P>Exif Tool ici (téléchargez l'exécutable Windows et installez-le. Changez le nom de l'application de "exiftool(-k).exe" en "exiftool.exe" puis placez-le dans le répertoire C:\Windows) : https:\/\/exiftool.org\/<\/A> <\/P>Visual Studio Code ici : https:\/\/code.visualstudio.com\/download<\/A> <\/P>Avec tout cela prêt, il est temps de commencer. La première chose à faire est de créer un répertoire de travail. Pour cet exemple, je l'appellerai "C:\User\YOUR_NAME\Documents\FPV Geotagging". Déplacez vos données (vidéo et .SRT) depuis votre carte microSD vers ce répertoire. Faites-en des copies maintenant, au cas où. Rendez-vous sur ce site : https:\/\/djitelemetryoverlay.com\/srt-viewer\/<\/A>. Sur la page d'accueil, cliquez sur "Load File(s)" et téléchargez le fichier .SRT correspondant à la vidéo du vol que vous souhaitez convertir en images géotaguées. Admirez la visualisation incroyablement cool de votre trajectoire de vol et des données. Téléchargez les données télémétriques au format CSV. Ce sera un enregistrement des données GPS Lat\/Lon\/Altitude (si vous faites confiance à cette dernière, personnellement je ne le fais pas) pour chaque image vidéo. Enregistrez-le dans notre répertoire de travail.<\/P>Ouvrez votre vidéo FPV dans VLC Media Player. Ouvrez le menu Outils et sélectionnez Préférences. Dans le coin inférieur gauche de la fenêtre Préférences qui vient d'apparaître se trouve un bouton bascule pour passer entre préférences simples et avancées. Sélectionnez préférences avancées. Dans le menu à gauche, faites défiler jusqu'au menu "Vidéo". Cliquez sur le menu déroulant pour voir toutes les préférences vidéo, puis cliquez sur "Filtres". La moitié droite de cette fenêtre devrait maintenant afficher plusieurs filtres avec des cases à cocher à côté de chacun. Cochez celui nommé "Scene video filter" (dans ma version de VLC, c'est le troisième en partant du haut dans la deuxième colonne). Avec ce filtre sélectionné, retournez au menu déroulant à gauche et cliquez sur la flèche déroulante à côté du mot "Filtres". Faites défiler vers le bas et sélectionnez "Scene filter". Modifiez les préférences pour que le format d'image soit "JPG" et que le préfixe du chemin du répertoire soit notre répertoire de travail ("C:\User\YOUR_NAME\Documents\FPV Geotagging" dans ce cas). Ensuite, ajustez le ratio d'enregistrement selon la fréquence d'images de votre caméra et combien de photos vous souhaitez exporter depuis cette vidéo. Le DJI FPV enregistre à 60 images par seconde, donc j'ai réglé le ratio d'enregistrement à 60 pour capturer une photo chaque seconde de vidéo. Pour plus d'informations sur son fonctionnement et quel ratio utiliser, consultez ce guide excellent (https:\/\/www.vlchelp.com\/automated-screenshots-interval\/#:~:text=Expand%20further%2C%20Video%20%3E%20Filters%20%3E,would%20make%20it%2050%20seconds<\/A>). Cliquez sur Enregistrer en bas à droite puis fermez la fenêtre VLC. Rouvrez la vidéo dans VLC et elle devrait commencer à exporter une photo chaque seconde dans notre répertoire de travail. Vérifiez que cela se produit bien. Sinon, consultez la ressource liée précédemment. Chaque image doit être exportée sous un nom comme "scene00001.jpg", "scene00061.jpg", "scene00121.jpg", etc. Les numéros suivant "scene" correspondent à l'image dans la vidéo dont elles ont été extraites (par exemple, "scene0001.jpg" est une image JPG du premier frame de la vidéo). Une fois ces images sauvegardées dans le répertoire, il est temps de géotagger les images. <\/P>Ouvrez Visual Studio Code ainsi que le CSV que nous avons sauvegardé précédemment. Si vous devez configurer VS Code, faites-le maintenant. Il y a beaucoup de documentation en ligne pour cela. Si vous utilisez un autre logiciel d'édition de code, ignorez simplement cette partie .<\/P>En supposant que vous utilisez Microsoft Excel, retournez au CSV, créez une nouvelle colonne à côté de la colonne "FRAMECNT" appelée "File Name". Sélectionnez les valeurs du compteur d'images dans la colonne "FRAMECNT", faites un clic droit et choisissez "Format cells" (Format des cellules). Dans le menu à gauche, sélectionnez "Special" puis "ZIP Code" sous la colonne "Type". Cela ajoutera des zéros devant nos compteurs d'images. Il existe d'autres méthodes pour cela, je suis conscient, et si vous avez une meilleure méthode merci de la partager. C'est juste une méthode rapide et simple ici. Dans la première cellule sous "File Name", construisez une expression pour reconstruire le nom du fichier ; ici nous voulons que "scene00001.jpg" soit dans la première cellule sous "File Name", puis "scene00061.jpg", etc., ainsi de suite. Assurez-vous ensuite de copier-coller ces noms ou créer une nouvelle colonne avec ces noms comme Valeurs uniquement. Créez une nouvelle feuille dans ce CSV et ouvrez une fenêtre Explorateur Windows. Naviguez jusqu'au répertoire de travail. Triez tous les fichiers par nom et sélectionnez tous les fichiers images du drone (et seulement<\/EM> les images). En maintenant Shift appuyé, faites un clic droit et sélectionnez "Copy as path..." (Copier comme chemin...). Retournez dans Excel sur notre feuille vide et collez la liste des fichiers. Créez une nouvelle colonne appelée encore une fois "File Name", puis extrayez les noms des fichiers depuis la fin des chemins collés (la formule "=RIGHT(A2,14)" devrait fonctionner). Étirez cette formule vers le bas jusqu'à la fin des données. Assurez-vous aussi ici de copier-coller cette colonne comme Valeurs uniquement). Créez cinq nouvelles colonnes appelées "LATITUDE", "LAT REF", "LONGITUDE", "LON REF", et "ALTITUDE". En utilisant une recherche X ou V lookup, récupérez les valeurs latitudinales, longitudinales et d'altitude pour chaque fichier en utilisant les colonnes "File Name" comme référence. Dans les colonnes Lat\/Lon Ref entrez N/S ou E/W respectivement (voir : https:\/\/exiftool.org\/faq.html#Q14<\/A> pour explication). Il peut y avoir des méthodes meilleures ou plus simples ou mieux expliquées pour faire cela ; pour apprendre comment faire cela consultez les pages d'aide Microsoft sur X lookup et V lookup. Désolé si c'est confus ici ; l'objectif final est d'obtenir une liste des valeurs lat,long,alt pour chaque fichier comme décrit ci-dessus. Une fois ceci fait, sauvegardez cet onglet comme un CSV séparé dans notre répertoire sous le nom « SRT_Telemtry.csv ».<\/P> <\/P>Retournez à Visual Studio et collez ce bloc :<\/P> <\/P> <\/P> <\/P>import os import csv with open('F:\/Drone Footage \/05.10.2022 \/Frame_Geotagging_Data.csv','r') as file: reader=csv.DictReader(file) for lyrname in reader: picture_filename = lyrname['File Name'] gps_latitude = lyrname['Latitude'] gps_longitude = lyrname['Longitude'] gps_altitude = '20' gps_lat_ref = lyrname['Lat Ref'] gps_lon_ref = lyrname['Lon Ref'] command_string = f'exiftool -GPSLatitude="{gps_latitude}" {picture_filename}' os.system(command_string) command_string = f'exiftool -GPSLatitudeRef="{gps_lat_ref}" {picture_filename}' os.system(command_string) command_string = f'exiftool -GPSLongitude="{gps_longitude}" {picture_filename}' os.system(command_string) command_string = f'exiftool -GPSLongitudeRef="{gps_lon_ref}" {picture_filename}' os.system(command_string) command_string = f'exiftool -GPSAltitude="{gps_altitude}" {picture_filename}' os.system(command_string)<\/code><\/pre> <\/P> <\/P> <\/P> Changez le chemin du fichier par celui correspondant à votre propre répertoire (la chaîne après la commande « open » à la ligne 3) puis sauvegardez ce script dans notre répertoire sous « batch_exif_writing.py ». Ouvrez un terminal commande et changez votre répertoire vers celui du travail (« cd C:\Users\YOUR_NAME\Documents\FPV Geotagging »). Tapez « python batch_exif_writing.py » puis appuyez sur Entrée. Vous devriez voir défiler plusieurs messages « 1 image has been updated » apparaître dans votre terminal au fur et à mesure que tous vos fichiers sont géotagués.<\/P>Une fois que le script a fini son exécution (cela a pris environ 5 minutes sur mon ordinateur), vos images sont désormais géotaguées et peuvent être chargées dans Drone2Map ! Quoi qu'il en soit, j'espère que ce guide aidera quelqu'un là-bas cherchant à utiliser le drone DJI FPV et Drone2Map. Je suis encore en train de traiter les images pour nettoyer les artefacts / parties indésirables des images issues du processus de capture. Mais ce sera un sujet pour un autre jour. Merci de me faire savoir si vous avez des modifications / suggestions / commentaires / critiques concernant ce processus. Je suis sûr qu'il existe des moyens plus simples de faire cela, mais c'est ce qui a fonctionné pour moi et j'ai dû improviser. Merci !
Exif Tool ici (téléchargez l'exécutable Windows et installez-le. Changez le nom de l'application de "exiftool(-k).exe" en "exiftool.exe" puis placez-le dans le répertoire C:\Windows) :
Visual Studio Code ici :
Avec tout cela prêt, il est temps de commencer. La première chose à faire est de créer un répertoire de travail. Pour cet exemple, je l'appellerai "C:\User\YOUR_NAME\Documents\FPV Geotagging". Déplacez vos données (vidéo et .SRT) depuis votre carte microSD vers ce répertoire. Faites-en des copies maintenant, au cas où. Rendez-vous sur ce site :
Ouvrez votre vidéo FPV dans VLC Media Player. Ouvrez le menu Outils et sélectionnez Préférences. Dans le coin inférieur gauche de la fenêtre Préférences qui vient d'apparaître se trouve un bouton bascule pour passer entre préférences simples et avancées. Sélectionnez préférences avancées. Dans le menu à gauche, faites défiler jusqu'au menu "Vidéo". Cliquez sur le menu déroulant pour voir toutes les préférences vidéo, puis cliquez sur "Filtres". La moitié droite de cette fenêtre devrait maintenant afficher plusieurs filtres avec des cases à cocher à côté de chacun. Cochez celui nommé "Scene video filter" (dans ma version de VLC, c'est le troisième en partant du haut dans la deuxième colonne). Avec ce filtre sélectionné, retournez au menu déroulant à gauche et cliquez sur la flèche déroulante à côté du mot "Filtres". Faites défiler vers le bas et sélectionnez "Scene filter". Modifiez les préférences pour que le format d'image soit "JPG" et que le préfixe du chemin du répertoire soit notre répertoire de travail ("C:\User\YOUR_NAME\Documents\FPV Geotagging" dans ce cas). Ensuite, ajustez le ratio d'enregistrement selon la fréquence d'images de votre caméra et combien de photos vous souhaitez exporter depuis cette vidéo. Le DJI FPV enregistre à 60 images par seconde, donc j'ai réglé le ratio d'enregistrement à 60 pour capturer une photo chaque seconde de vidéo. Pour plus d'informations sur son fonctionnement et quel ratio utiliser, consultez ce guide excellent (
Ouvrez Visual Studio Code ainsi que le CSV que nous avons sauvegardé précédemment. Si vous devez configurer VS Code, faites-le maintenant. Il y a beaucoup de documentation en ligne pour cela. Si vous utilisez un autre logiciel d'édition de code, ignorez simplement cette partie .<\/P>
En supposant que vous utilisez Microsoft Excel, retournez au CSV, créez une nouvelle colonne à côté de la colonne "FRAMECNT" appelée "File Name". Sélectionnez les valeurs du compteur d'images dans la colonne "FRAMECNT", faites un clic droit et choisissez "Format cells" (Format des cellules). Dans le menu à gauche, sélectionnez "Special" puis "ZIP Code" sous la colonne "Type". Cela ajoutera des zéros devant nos compteurs d'images. Il existe d'autres méthodes pour cela, je suis conscient, et si vous avez une meilleure méthode merci de la partager. C'est juste une méthode rapide et simple ici. Dans la première cellule sous "File Name", construisez une expression pour reconstruire le nom du fichier ; ici nous voulons que "scene00001.jpg" soit dans la première cellule sous "File Name", puis "scene00061.jpg", etc., ainsi de suite. Assurez-vous ensuite de copier-coller ces noms ou créer une nouvelle colonne avec ces noms comme Valeurs uniquement. Créez une nouvelle feuille dans ce CSV et ouvrez une fenêtre Explorateur Windows. Naviguez jusqu'au répertoire de travail. Triez tous les fichiers par nom et sélectionnez tous les fichiers images du drone (et seulement<\/EM> les images). En maintenant Shift appuyé, faites un clic droit et sélectionnez "Copy as path..." (Copier comme chemin...). Retournez dans Excel sur notre feuille vide et collez la liste des fichiers. Créez une nouvelle colonne appelée encore une fois "File Name", puis extrayez les noms des fichiers depuis la fin des chemins collés (la formule "=RIGHT(A2,14)" devrait fonctionner). Étirez cette formule vers le bas jusqu'à la fin des données. Assurez-vous aussi ici de copier-coller cette colonne comme Valeurs uniquement). Créez cinq nouvelles colonnes appelées "LATITUDE", "LAT REF", "LONGITUDE", "LON REF", et "ALTITUDE". En utilisant une recherche X ou V lookup, récupérez les valeurs latitudinales, longitudinales et d'altitude pour chaque fichier en utilisant les colonnes "File Name" comme référence. Dans les colonnes Lat\/Lon Ref entrez N/S ou E/W respectivement (voir :
<\/P>
Retournez à Visual Studio et collez ce bloc :<\/P>
import os import csv with open('F:\/Drone Footage \/05.10.2022 \/Frame_Geotagging_Data.csv','r') as file: reader=csv.DictReader(file) for lyrname in reader: picture_filename = lyrname['File Name'] gps_latitude = lyrname['Latitude'] gps_longitude = lyrname['Longitude'] gps_altitude = '20' gps_lat_ref = lyrname['Lat Ref'] gps_lon_ref = lyrname['Lon Ref'] command_string = f'exiftool -GPSLatitude="{gps_latitude}" {picture_filename}' os.system(command_string) command_string = f'exiftool -GPSLatitudeRef="{gps_lat_ref}" {picture_filename}' os.system(command_string) command_string = f'exiftool -GPSLongitude="{gps_longitude}" {picture_filename}' os.system(command_string) command_string = f'exiftool -GPSLongitudeRef="{gps_lon_ref}" {picture_filename}' os.system(command_string) command_string = f'exiftool -GPSAltitude="{gps_altitude}" {picture_filename}' os.system(command_string)<\/code><\/pre> <\/P> <\/P> <\/P> Changez le chemin du fichier par celui correspondant à votre propre répertoire (la chaîne après la commande « open » à la ligne 3) puis sauvegardez ce script dans notre répertoire sous « batch_exif_writing.py ». Ouvrez un terminal commande et changez votre répertoire vers celui du travail (« cd C:\Users\YOUR_NAME\Documents\FPV Geotagging »). Tapez « python batch_exif_writing.py » puis appuyez sur Entrée. Vous devriez voir défiler plusieurs messages « 1 image has been updated » apparaître dans votre terminal au fur et à mesure que tous vos fichiers sont géotagués.<\/P>Une fois que le script a fini son exécution (cela a pris environ 5 minutes sur mon ordinateur), vos images sont désormais géotaguées et peuvent être chargées dans Drone2Map ! Quoi qu'il en soit, j'espère que ce guide aidera quelqu'un là-bas cherchant à utiliser le drone DJI FPV et Drone2Map. Je suis encore en train de traiter les images pour nettoyer les artefacts / parties indésirables des images issues du processus de capture. Mais ce sera un sujet pour un autre jour. Merci de me faire savoir si vous avez des modifications / suggestions / commentaires / critiques concernant ce processus. Je suis sûr qu'il existe des moyens plus simples de faire cela, mais c'est ce qui a fonctionné pour moi et j'ai dû improviser. Merci !
OMG this is amazing @RyanWalter . gonna try this out and let you know how it goes!
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.