python如何使用exifread获取图片的经纬度信息

python如何使用exifread获取图片的经纬度信息

废话不多说,直接进主题。先下载exifread包:pip install exifread

先看下我们的图片属性
在这里插入图片描述
直接上代码

import exifread

if __name__ == '__main__':
    f = open("D:\\IdeaPorject\\datasets\\Ir\\DJI_20210927093017_0001_T.JPG", 'rb')
    contents = exifread.process_file(f)

如此,我们获取到了该图片所有属性参数,
在这里插入图片描述

可以看到,返回值是一个字典,其中所有的属性都是IfdTag object;同时,我们也可以看到GPS信息:

  1. 如果仅做展示,直接获取、输出即可;

                
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用python的Pillow库来读取图片,然后使用EXIF数据来获取图片经纬度信息。以下是示例代码: ``` from PIL import Image from PIL.ExifTags import GPSTAGS, TAGS def get_exif_data(image): """ 获取图片的元数据 """ exif_data = {} with Image.open(image) as img: info = img._getexif() if info: for tag, value in info.items(): decoded = TAGS.get(tag, tag) exif_data[decoded] = value return exif_data def get_geotagging(exif_data): """ 获取图片经纬度信息 """ lat = None lng = None gps_info = {} if "GPSInfo" in exif_data: # 获取GPS信息 gps_info = exif_data["GPSInfo"] gps_latitude = get_gps_coords(gps_info, "GPSLatitude") gps_latitude_ref = gps_info.get("GPSLatitudeRef") gps_longitude = get_gps_coords(gps_info, "GPSLongitude") gps_longitude_ref = gps_info.get("GPSLongitudeRef") lat = convert_to_degrees(gps_latitude) if gps_latitude_ref != "N": lat = 0 - lat lng = convert_to_degrees(gps_longitude) if gps_longitude_ref != "E": lng = 0 - lng return lat, lng def get_gps_coords(gps_info, gps_tag): """ 获取GPS信息中的经纬度坐标值 """ coords = gps_info.get(gps_tag) if coords is None: return None num, den = coords[0], coords[1] val = float(num) / float(den) for i in range(2, len(coords)): num, den = coords[i], coords[i + 1] if i + 1 < len(coords) else 1 val += (float(num) / float(den)) / 60.0 return val def convert_to_degrees(value): """ 将经纬度转换为以度为单位的值 """ deg, minutes = int(value[0]), value[1:] val = deg + (float(minutes[0]) / float(minutes[1])) / 60.0 return val # 调用上述函数来获取图片经纬度信息 exif_data = get_exif_data("image.jpg") lat, lng = get_geotagging(exif_data) print("经度:", lng) print("纬度:", lat) ``` 需要注意的是,无人机拍摄的图片可能不包含GPS信息,或是GPS信息不完整甚至不正确,此时获取到的经纬度信息就可能是不准确的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值