쉘 스크립트는 일련의 사진에 다양한 GPS 데이터를 추가합니다.

쉘 스크립트는 일련의 사진에 다양한 GPS 데이터를 추가합니다.

저는 비행 영화를 만드는 데 사용하는 드론을 가지고 있으며, 이 영상을 사용하여 촬영 중인 지형의 DEM(Digital Elevation Model)을 구축할 것입니다. 영화에서 프레임을 쉽게 추출할 수 있지만 메서드(ffmpeg)는 DEM을 안정적으로 구축하는 데 필요한 위도 및 경도 정보를 이러한 프레임에 제공하지 않습니다. 이 모든 데이터는 제가 다운로드한 드론 비행 제어 앱에 저장된 .csv 파일에서 찾을 수 있습니다.

이 .csv 파일에서 모든 탐색 데이터 열을 추출하고 싶습니다. 이 작업을 수행하려면 awk를 사용할 수 있습니다. 그런 다음 비행 경로에 있는 특정 타임스탬프의 탐색 데이터를 영화에서 추출된 해당 스틸 프레임(동일한 타임스탬프)에 추가하는 스크립트를 작성하려고 합니다. Exiftool을 사용하여 GPS 데이터를 이미지에 추가할 수 있지만 쉘 스크립팅이 처음이기 때문에 현재 중첩 루프를 작동시킬 수 없습니다.

현재 내 스크립트는 다음과 같이 작성되었습니다.모두.csv 파일의 행모든폴더에 있는 사진. 대신 line1(위도, 경도 등)을 photo1에 쓰고 line2를 photo2에 쓰는 식으로 쓰고 싶습니다. 이 문제를 해결할 수 있어야 하지만 해킹할 수는 없습니다. 어떤 도움이라도 환영합니다!

# Using awk, extract the relevant columns from the flightpath dataset
awk -F, '{print $1,$2,$3,$7,$15,$22,$23 }' test.csv > test2.csv

# Read through .csv file line-by-line
# Make variables that can be commanded
while IFS=" " read -r latitude longitude altitude time compHeading gimbHeading gimbPitch
do

# exiftool can now command these variables
# write longitude and latitude to some photograph
    for photo in *.png; do
    exiftool -GPSLongitude="$longitude"  -GPSLatitude="$latitude" *.png
    done

# Following line tells bash which textfile to draw data from
done < test2.csv

답변1

CSV 파일의 행과 동일한 수의 사진이 있는 경우 간단한 for루프를 사용할 수 있습니다.

for photo in *.png; do
  IFS=" " read -r latitude longitude altitude time compHeading gimbHeading gimbPitch
  exiftool -GPSLongitude="$longitude"  -GPSLatitude="$latitude" "$photo"
done < test2.csv

관련 정보