Ahoj všichni - pracuji na tom už téměř 3 dny a konečně jsem přišel s metodikou pro import videa z DJI FPV dronu do Drone2Map za účelem vytváření ortomosaik a dalších 2D projektů. Nenašel jsem žádné informace ani předchozí literaturu o metodice integrace DJI FPV dronu do systému Drone2Map, takže doufám, že to může pomoci dalšímu, kdo hledá odpověď na tuto otázku. Jsem si jistý, že existují lepší způsoby, jak udělat to, co se chystám podrobně popsat, a pokud ano, dejte mi prosím vědět. Také pokud má tato metodika nějaké využití pro jiné drony, dejte mi prosím vědět. <\/P>
Než začnu, chtěl jsem uvést několik předpokladů\/výhrad. Tato metodika byla vyvinuta pouze pro převod videa pořízeného v úhlu od nadiru k šikmému záběru na geotagované statické snímky, které lze importovat do Drone2Map. Vyžaduje minimální pohodlí s příkazovým řádkem a úpravou python skriptů, několik aplikací třetích stran kromě Drone2Map a pozornost k vaší výšce a časování během letu (výška DJI FPV je konzistentně nepřesná a nepoužitelná). Předpokládám, že většina lidí bude pořizovat snímky ve stálé výšce nad rovnou(ější) zemí. To může být nesprávný předpoklad, ale je to ten, který je učiněn v tomto shrnutí. Pro fungování tohoto procesu musíte mít DJI FPV dron nastavený na nahrávání SRT dat.<\/EM> Toto je ve výchozím nastavení zapnuto, ale lze to přepnout v menu systémových nastavení. Tato metodika také vyžaduje: VLC Media Player<\/STRONG>, Exif Tool<\/STRONG>, software pro úpravu skriptů <\/STRONG>(používám Visual Studio).<\/P>VLC Media Player najdete zde: https:\/\/www.videolan.org\/vlc\/download-windows.html<\/A><\/P>Exif Tool zde (stáhněte Windows spustitelný soubor a nainstalujte. Změňte název aplikace z "exiftool(-k).exe" na "exiftool.exe" a poté jej vložte do adresáře C:\Windows): https:\/\/exiftool.org\/<\/A> <\/P>Visual Studio Code zde: https:\/\/code.visualstudio.com\/download<\/A> <\/P>S tímto vším připraveným je čas začít. První věc je vytvořit pracovní adresář. Pro tento příklad ho nazvu "C:\User\YOUR_NAME\Documents\FPV Geotagging". Přesuňte svá data (video a .SRT) z microSD karty do tohoto adresáře. Udělejte si nyní kopie těchto dat pro případ potřeby. Přejděte na tuto stránku: https:\/\/djitelemetryoverlay.com\/srt-viewer\/<\/A>. Na úvodní stránce klikněte na "Load File(s)" a nahrajte .SRT soubor k videu letu, který chcete převést na geotagované snímky. Obdivujte neuvěřitelně skvělou vizualizaci vaší letové trasy a dat. Stáhněte telemetrická data jako CSV. Bude to záznam GPS Lat\/Lon\/Altitude (pokud tomu poslednímu důvěřujete, já osobně ne) dat pro každý snímek videa. Uložte to do našeho pracovního adresáře.<\/P>Otevřete své FPV video ve VLC Media Playeru. Otevřete menu Nástroje a vyberte Předvolby. V levém dolním rohu okna Předvolby, které se právě objevilo, bude přepínač mezi jednoduchými a pokročilými předvolbami. Vyberte pokročilé předvolby. V menu vlevo sjeďte dolů do menu "Video". Klikněte na rozbalovací menu pro zobrazení všech video předvoleb a klikněte na "Filtry". Pravá polovina tohoto okna by nyní měla zobrazovat několik filtrů s zaškrtávacími políčky vedle každého. Zaškrtněte ten pojmenovaný "Scene video filter" (v mé verzi VLC je to třetí shora ve druhém sloupci). S tímto filtrem vybraným se vraťte do posuvného menu vlevo a klikněte na rozbalovací šipku vedle slova "Filtry". Sjeďte dolů a vyberte "Scene filter". Změňte předvolby tak, aby formát obrázku byl "JPG" a prefix cesty adresáře byl náš pracovní adresář (v tomto případě "C:\User\YOUR_NAME\Documents\FPV Geotagging"). Dále upravte poměr nahrávání podle snímkové frekvence vaší kamery a kolik fotografií chcete z tohoto videa exportovat. DJI FPV nahrává 60 snímků za sekundu, takže jsem nastavil poměr nahrávání na 60, aby se zachytila jedna fotografie za sekundu videa. Pro více informací o tom, jak to funguje a jaký poměr nahrávání byste měli použít, podívejte se na tento skvělý průvodce (https:\/\/www.vlchelp.com\/automated-screenshots-interval\/#:~:text=Expand%20further%2C%20Video%20%3E%20Filters%20%3E,would%20make%20it%2050%20seconds<\/A>). Klikněte na Uložit v pravém dolním rohu a poté zavřete okno VLC. Znovu otevřete video ve VLC a mělo by začít exportovat fotografii každou sekundu do našeho pracovního adresáře. Zkontrolujte, zda se to děje. Pokud ne, konzultujte dříve uvedený zdroj. Každý snímek by měl být exportován jako obrázek pojmenovaný "scene00001.jpg", "scene00061.jpg", "scene00121.jpg" atd. Čísla následující po "scene" odpovídají snímku ve videu, ze kterého byly zachyceny (např. "scene0001.jpg" je JPG formátovaný obrázek prvního snímku videa). S těmito uloženými v adresáři je čas geotagovat obrázky. <\/P>Otevřete Visual Studio Code i CSV soubor, který jsme dříve uložili. Pokud potřebujete nastavit VS Code, udělejte to nyní. Existuje spousta dokumentace online o tom, jak to udělat. Pokud používáte jiný software pro úpravu kódu, tuto část ignorujte .<\/P>Předpokládáme-li použití Microsoft Excelu, vraťte se k CSV souboru a vytvořte nový sloupec vedle sloupce "FRAMECNT" nazvaný "File Name". Zvýrazněte hodnoty počtu snímků ve sloupci "FRAMECNT", klikněte pravým tlačítkem myši a vyberte "Formát buněk". V levém menu vyberte "Speciální" a poté "PSČ" ve sloupci "Typ". To přidá vedoucí nuly k našemu počtu snímků. Vím o jiných způsobech jak to udělat, pokud máte lepší metodu, prosím sdílejte ji. Toto je jen rychlý a hrubý způsob jak toho dosáhnout. V první buňce pod „File Name“ vytvořte výraz pro rekonstrukci názvu našeho souboru; v tomto případě chceme „scene00001.jpg“ v první buňce pod „File Name“, „scene00002.jpg“ ve druhé atd. Ujistěte se, že tyto hodnoty překopírujete nebo vytvoříte nový sloupec pouze s hodnotami těchto názvů souborů. Vytvořte nový list v tomto CSV souboru a otevřete okno Průzkumníka Windows. Navigujte do pracovního adresáře. Seřaďte všechny soubory podle názvu a zvýrazněte všechny drone obrázky (a pouze<\/EM> obrázky). Podržte Shift, klikněte pravým tlačítkem myši a vyberte „Kopírovat jako cestu...“. Vraťte se do Excelu na prázdný list a vložte seznam souborů. Vytvořte nový sloupec opět nazvaný „File Name“ a získávejte názvy souborů z konce cest k souborům které jste právě vložili („=RIGHT(A2,14)“ by mělo fungovat). Táhněte dolů až ke konci seznamu; ujistěte se že tento sloupec překopírujete jako hodnoty). Vytvořte pět nových sloupců nazvaných „LATITUDE“, „LAT REF“, „LONGTIUDE“, „LON REF“ a „ALTITUDE“. Pomocí X nebo V hledání vraťte hodnoty latitudy, longitudy a nadmořské výšky pro každý soubor pomocí sloupců „File Name“ jako referenčního bodu. Ve sloupcích Lat/Lon Ref zadejte N/S nebo E/W podle potřeby (viz: https:\/\/exiftool.org\/faq.html#Q14<\/A> pro vysvětlení). Mohou existovat lepší nebo jednodušší způsoby jak to udělat; pro jejich nalezení navštivte stránky podpory Microsoftu ohledně X a V hledání funkcí. Omlouvám se za případné zmatení ohledně tohohle kroku; konečným cílem je seznam lat/lon/alt hodnot pro každý soubor což lze dosáhnout podle výše uvedeného postupu. Jakmile je toto hotovo, uložte tento list jako samostatný CSV soubor v našem pracovním adresáři pod názvem „SRT_Telemtry.csv“.<\/P> <\/P>Vrátíme-li se k Visual Studiu, vložte následující blok:<\/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> Změňte cestu k souboru na svůj vlastní pracovní adresář (řetězec za příkazem "open" ve třetím řádku) a uložte tento skript do našeho pracovního adresáře pod názvem "batch_exif_writing.py". Otevřete příkazový terminál a změňte adresář na pracovní adresář ("cd C:\Users\YOUR_NAME\Documents\FPV Geotagging"). Zadejte "python batch_exif_writing.py" a stiskněte Enter. Měli byste vidět proud zpráv "1 image has been updated", které budou proudit přes vaše terminálové okno jak budou všechny vaše soubory geotagovány.<\/P>Až skript dokončí běh (mému počítači to trvalo asi 5 minut), vaše obrázky jsou nyní geotagovány a mohou být načteny do Drone2Map! Každopádně doufám, že tento průvodce někomu pomůže tam venku, kde chci použít DJI FPV dron a Drone2Map. Stále pracuji na zpracování snímků, abych odstranil jakékoli artefakty/nežádoucí části snímků z procesu zachycování obrazu. Ale to je téma na jiný den. Prosím, dejte mi vědět, pokud máte úpravy/návrhy/komentáře/kritiku k tomuto procesu. Jsem si jistý, že existují jednodušší způsoby, jak to udělat, ale toto fungovalo pro mě a musel jsem to vytvořit v izolaci. Děkuji!
Exif Tool zde (stáhněte Windows spustitelný soubor a nainstalujte. Změňte název aplikace z "exiftool(-k).exe" na "exiftool.exe" a poté jej vložte do adresáře C:\Windows):
Visual Studio Code zde:
S tímto vším připraveným je čas začít. První věc je vytvořit pracovní adresář. Pro tento příklad ho nazvu "C:\User\YOUR_NAME\Documents\FPV Geotagging". Přesuňte svá data (video a .SRT) z microSD karty do tohoto adresáře. Udělejte si nyní kopie těchto dat pro případ potřeby. Přejděte na tuto stránku:
Otevřete své FPV video ve VLC Media Playeru. Otevřete menu Nástroje a vyberte Předvolby. V levém dolním rohu okna Předvolby, které se právě objevilo, bude přepínač mezi jednoduchými a pokročilými předvolbami. Vyberte pokročilé předvolby. V menu vlevo sjeďte dolů do menu "Video". Klikněte na rozbalovací menu pro zobrazení všech video předvoleb a klikněte na "Filtry". Pravá polovina tohoto okna by nyní měla zobrazovat několik filtrů s zaškrtávacími políčky vedle každého. Zaškrtněte ten pojmenovaný "Scene video filter" (v mé verzi VLC je to třetí shora ve druhém sloupci). S tímto filtrem vybraným se vraťte do posuvného menu vlevo a klikněte na rozbalovací šipku vedle slova "Filtry". Sjeďte dolů a vyberte "Scene filter". Změňte předvolby tak, aby formát obrázku byl "JPG" a prefix cesty adresáře byl náš pracovní adresář (v tomto případě "C:\User\YOUR_NAME\Documents\FPV Geotagging"). Dále upravte poměr nahrávání podle snímkové frekvence vaší kamery a kolik fotografií chcete z tohoto videa exportovat. DJI FPV nahrává 60 snímků za sekundu, takže jsem nastavil poměr nahrávání na 60, aby se zachytila jedna fotografie za sekundu videa. Pro více informací o tom, jak to funguje a jaký poměr nahrávání byste měli použít, podívejte se na tento skvělý průvodce (
Otevřete Visual Studio Code i CSV soubor, který jsme dříve uložili. Pokud potřebujete nastavit VS Code, udělejte to nyní. Existuje spousta dokumentace online o tom, jak to udělat. Pokud používáte jiný software pro úpravu kódu, tuto část ignorujte .<\/P>
Předpokládáme-li použití Microsoft Excelu, vraťte se k CSV souboru a vytvořte nový sloupec vedle sloupce "FRAMECNT" nazvaný "File Name". Zvýrazněte hodnoty počtu snímků ve sloupci "FRAMECNT", klikněte pravým tlačítkem myši a vyberte "Formát buněk". V levém menu vyberte "Speciální" a poté "PSČ" ve sloupci "Typ". To přidá vedoucí nuly k našemu počtu snímků. Vím o jiných způsobech jak to udělat, pokud máte lepší metodu, prosím sdílejte ji. Toto je jen rychlý a hrubý způsob jak toho dosáhnout. V první buňce pod „File Name“ vytvořte výraz pro rekonstrukci názvu našeho souboru; v tomto případě chceme „scene00001.jpg“ v první buňce pod „File Name“, „scene00002.jpg“ ve druhé atd. Ujistěte se, že tyto hodnoty překopírujete nebo vytvoříte nový sloupec pouze s hodnotami těchto názvů souborů. Vytvořte nový list v tomto CSV souboru a otevřete okno Průzkumníka Windows. Navigujte do pracovního adresáře. Seřaďte všechny soubory podle názvu a zvýrazněte všechny drone obrázky (a pouze<\/EM> obrázky). Podržte Shift, klikněte pravým tlačítkem myši a vyberte „Kopírovat jako cestu...“. Vraťte se do Excelu na prázdný list a vložte seznam souborů. Vytvořte nový sloupec opět nazvaný „File Name“ a získávejte názvy souborů z konce cest k souborům které jste právě vložili („=RIGHT(A2,14)“ by mělo fungovat). Táhněte dolů až ke konci seznamu; ujistěte se že tento sloupec překopírujete jako hodnoty). Vytvořte pět nových sloupců nazvaných „LATITUDE“, „LAT REF“, „LONGTIUDE“, „LON REF“ a „ALTITUDE“. Pomocí X nebo V hledání vraťte hodnoty latitudy, longitudy a nadmořské výšky pro každý soubor pomocí sloupců „File Name“ jako referenčního bodu. Ve sloupcích Lat/Lon Ref zadejte N/S nebo E/W podle potřeby (viz:
<\/P>
Vrátíme-li se k Visual Studiu, vložte následující blok:<\/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> Změňte cestu k souboru na svůj vlastní pracovní adresář (řetězec za příkazem "open" ve třetím řádku) a uložte tento skript do našeho pracovního adresáře pod názvem "batch_exif_writing.py". Otevřete příkazový terminál a změňte adresář na pracovní adresář ("cd C:\Users\YOUR_NAME\Documents\FPV Geotagging"). Zadejte "python batch_exif_writing.py" a stiskněte Enter. Měli byste vidět proud zpráv "1 image has been updated", které budou proudit přes vaše terminálové okno jak budou všechny vaše soubory geotagovány.<\/P>Až skript dokončí běh (mému počítači to trvalo asi 5 minut), vaše obrázky jsou nyní geotagovány a mohou být načteny do Drone2Map! Každopádně doufám, že tento průvodce někomu pomůže tam venku, kde chci použít DJI FPV dron a Drone2Map. Stále pracuji na zpracování snímků, abych odstranil jakékoli artefakty/nežádoucí části snímků z procesu zachycování obrazu. Ale to je téma na jiný den. Prosím, dejte mi vědět, pokud máte úpravy/návrhy/komentáře/kritiku k tomuto procesu. Jsem si jistý, že existují jednodušší způsoby, jak to udělat, ale toto fungovalo pro mě a musel jsem to vytvořit v izolaci. Děkuji!
OMG this is amazing @RyanWalter . gonna try this out and let you know how it goes!
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.