单反相机照片用python 脚本添加gps位置信息

news/2024/11/16 18:40:50/

现在的单反相机基本都不带gps,如果要给照片添加gps信息,需要一直开着官方的app,非常耗电,出去拍照,可能忘记打开app,或者手机电量不够都可能导致照片没有位置信息。

个人整理照片的时候,喜欢在手机的相册里通过位置找照片:

 所以我就想把单反没有gps信息的照片手工补上gps信息。

在网上找了很多方法,大部分都很老,或者补上的gps 信息会位置偏移,就自己研究了一下:

--------------------------------------------------------------------------------------------------------------

思路这样:把没有位置信息的照片单独放一个文件夹(拷贝的副本,保持备份的习惯),

然后到地图拾取经纬度,然后填到照片的源数据。

1.准备一张照片

(建议先备份一下),我随便找了张壁纸

右键可以看到没有任何的位置信息

2.拾取坐标

到这个地址去直接拾取国际WGS84坐标
GPS工具箱管理https://web.gpstool.com/index

 点击一个点,把这个点的经纬度记下来,

30.648850,104.045879

3.用python程序添加gps信息

然后用以下python代码

或者直接使用我打包好的exe程序。

阿里云盘分享https://www.aliyundrive.com/s/VeVn7bpQxtg提取码 1w0n

# ecoding:utf-8
import os
from PIL import Image
import piexif
import win32con
import win32uidef main():image_path = browse(True)[1]gps_str = input('请输入经纬度:')arr = gps_str.split(',')lng = float(arr[1])lat = float(arr[0])print(lng)print(lat)# 将经纬度与相对航高转为exif可用的经纬度与行高# exif需要的航高输入为(20000,2)格式,表示高度为20000/100米# exif需要的经度与维度为((12, 1), (20,1), (41000, 1000))格式表示12度20分41秒lng_exif = format_latlng(lng)lat_exif = format_latlng(lat)_dict = {"lng": lng_exif, "lat": lat_exif, "lng_ref": 'E', "lat_ref": 'N'}print("写入文件:", image_path)# 修改图片的exifread_modify_exif(image_path, _dict)def browse(mode: bool,default_name: str = "",title: str = "选择您的文件",file_type: str = "图片文件(*.png;*.jpg)|*.png;*.jpg|",path: str = "desktop"):"""弹出窗口返回保存或者选择的路径:param mode: False"为 "保存/另存为", "True"为 "打开":param default_name:默认输入文件名:param title:窗口提示:param file_type:可选的文件类型,所有文件(*.*)|*.*|图片文件(*.png;*.jpg)|*.png;*.jpg|:param path::return:[存储类型、文件路径、文件类型]"""api_flag = win32con.OFN_OVERWRITEPROMPT | win32con.OFN_FILEMUSTEXISTdlg = win32ui.CreateFileDialog(mode, None, default_name, api_flag, file_type)dlg.SetOFNTitle(title)dlg.SetOFNInitialDir(os.path.abspath(path))dlg.DoModal()filename = dlg.GetPathName()fileExt = dlg.GetFileExt()if os.path.exists(filename):if_pass = Trueelif not mode:if os.path.split(filename)[0] == '':if_pass = Falseelse:if_pass = Trueelse:if_pass = Falsereturn [if_pass, filename, fileExt]def format_latlng(latlng):"""经纬度十进制转为分秒"""degree = int(latlng)res_degree = latlng - degreeminute = int(res_degree * 60)res_minute = res_degree * 60 - minuteseconds = round(res_minute * 60.0, 3)return ((degree, 1), (minute, 1), (int(seconds * 1000), 1000))def read_modify_exif(image_path, _dict):""" 读取并且修改exif文件"""img = Image.open(image_path)  # 读图exif_dict = piexif.load(img.info['exif'])  # 提取exif信息exif_dict['GPS'][piexif.GPSIFD.GPSLongitude] = _dict['lng']  # 修改经度exif_dict['GPS'][piexif.GPSIFD.GPSLatitude] = _dict['lat']  # 修改纬度exif_dict['GPS'][piexif.GPSIFD.GPSLongitudeRef] = _dict['lng_ref']  # odm需要读取,一般为’W'exif_dict['GPS'][piexif.GPSIFD.GPSLatitudeRef] = _dict['lat_ref']  # 一般为‘N'exif_bytes = piexif.dump(exif_dict)print('lng:{} lat:{}'.format(exif_dict['GPS'][piexif.GPSIFD.GPSLongitude],exif_dict['GPS'][piexif.GPSIFD.GPSLatitude]))piexif.insert(exif_bytes, image_path)if __name__ == "__main__":main()

把python代码保存到本地py文件

双机执行会提示选择一个图片文件,我选择之前准备的图片文件。 

然后会提示输入经纬度,则把上面准备的坐标输入回车即可。 

然后图片就有经纬度信息了

可以用这个网站来看看位置信息

在线查看图片Exif信息_定位信息_GPS信息 - StrErr.com查看图片Exif信息https://www.strerr.com/cn/exif.html

 

然后就成功啦

 这种方法有弊端,位置信息全靠记忆,比较麻烦,后期文章更新通过轨迹信息批量给照片添加位置信息的方法。


http://www.ppmy.cn/news/173619.html

相关文章

中国数码单反相机市场趋势报告、技术动态创新及市场预测

数码单反相机市场的企业竞争态势 该报告涉及的主要国际市场参与者有Canon、Nikon、Sony、Panasonic、Fujifilm、TriStateCamera、Pentax、Zeetech等。这些参与者的市场份额、收入、公司概况和SWOT分析都包含在数码单反相机市场调研报告中。 产品分类: 百万像素-少于…

vue如何进行国际化(i18n)和本地化(l10n)处理

首先,我们要明确一下,国际化(i18n)和本地化(l10n)是两个不同的概念。 国际化(i18n)是指将产品或应用程序适应不同国家或地区的过程,主要涉及到不同语言的支持。当我们在…

dell服务器装系统按哪个键,bios设置 dell笔记本重装系统按哪个键进入bios

不同电脑品牌进入bios的方法都是不一样的,最近有朋友就想知道dell笔记本重装系统按哪个键进入bios,下面就由小编告诉您dell笔记本重装系统按哪个键进入bios。 1、 首先我们打开dell笔记本,出现欢迎画面就立即按下F2进入到设置界面。 2、我们进…

dell服务器设置bios设置u盘启动不了系统,戴尔台式机bios设置图解教程|dell bios设置u盘启动...

戴尔台式机bios设置图解教程|dell bios设置u盘启动 通常电脑系统使用一段时间之后就会变得卡顿,使用起来很不流畅,一般的教程都会教导大家进行垃圾清理,但是清理完流畅度并没有好多少。那么怎么办呢?我们可以进行系统重装&#xf…

dell 台式电脑设置每天定时开机和关机

每天定时开机设置: 戴尔电脑通过CMOS设置实现自动开机的设置过程如下: 1、首先进入“CMOS SETUP”程序(大多数主板是在计算机启动时按DEL或F2键进入); 2、然后将光条移到“Power Management ”选项上,回车进入其子菜单&#xff1…

dell服务器怎么加入pe系统,Dell台式机如何进入PE

PE,即系统U盘,重装系统的时候,需要进入PE才能启动重装,一般的电脑开机按F12或Del即可进入。但是,Dell电脑默认是进入不了PE的。 如何进入Dell台式机的PE,请看详细教程。 工具/原料 Dell台式电脑 U盘&#x…

DELL 笔记本 - Windows 10 恢复 / 重置此电脑

DELL 笔记本 - Windows 10 恢复 / 重置此电脑 1. Windows 设置 2. 更新和安全 3. 恢复 4. 删除所有内容 5. 所有驱动器 6. 仅删除我的文件 7. 重置 References https://yongqiang.blog.csdn.net/

dell笔记本指示灯闪烁_Dell笔记本电源灯黄灯一直闪烁是什么问题 争决方法

笔记本上的电源指示图标闪烁黄灯时,表示您的上网本电池即将完全耗尽。请尽快连接连接电源适配器确认计算机正常工作。若当连接电源适配器后电池没有充电,请将您的主板放电: 1、移除电源适配器和电池。 2、按住电源按钮10秒钟后释放电源开关。…