前提
プログラミング初心者の学生です
やりたいこと
Pythonで360°画像のJPGから緯度経度情報を抜き出したいです
このサイトを参考に(https://news.mynavi.jp/techplus/article/zeropython-42/)
コードを実行しました
Python
1from PIL import Image 2import PIL.ExifTags as ExifTags 3 4def get_gps(fname): 5 # 画像ファイルを開く --- (*1) 6 im = Image.open(fname) 7 # EXIF情報を辞書型で得る 8 exif = { 9 ExifTags.TAGS[k]: v 10 for k, v in im._getexif().items() 11 if k in ExifTags.TAGS 12 } 13 # GPS情報を得る --- (*2) 14 gps_tags = exif["GPSInfo"] 15 gps = { 16 ExifTags.GPSTAGS.get(t, t): gps_tags[t] 17 for t in gps_tags 18 } 19 # 緯度経度情報を得る --- (*3) 20 def conv_deg(v): 21 # 分数を度に変換 22 d = float(v[0][0]) / float(v[0][1]) 23 m = float(v[1][0]) / float(v[1][1]) 24 s = float(v[2][0]) / float(v[2][1]) 25 return d + (m / 60.0) + (s / 3600.0) 26 lat = conv_deg(gps["GPSLatitude"]) 27 lat_ref = gps["GPSLatitudeRef"] 28 if lat_ref != "N": lat = 0 - lat 29 lon = conv_deg(gps["GPSLongitude"]) 30 lon_ref = gps["GPSLongitudeRef"] 31 if lon_ref != "E": lon = 0 - lon 32 return lat, lon 33 34if __name__ == "__main__": 35 lat, lon = get_gps("test.JPG") 36 print(lat, lon)
わからないこと
EXIF情報は抜き出せますが,緯度経度に変換しようとするとエラーになり困っています
これは,もともと位置情報がついていないということなのでしょうか?
解決策を教えていただけると嬉しいです
エラー
Traceback (most recent call last): File "get_exif.py", line 35, in <module> lat, lon = get_gps("test.JPG") File "get_exif.py", line 26, in get_gps lat = conv_deg(gps["GPSLatitude"]) KeyError: 'GPSLatitude'
EXIF情報
変数gpsにキー"GPSLatitude"が無いっていわれてますね。
gpsをprintしてみては?
回答2件
あなたの回答
tips
プレビュー