从智能手机照片中提取地理坐标
Posted
技术标签:
【中文标题】从智能手机照片中提取地理坐标【英文标题】:extracting geographic coordinates from a smartphone photo 【发布时间】:2017-03-10 03:11:02 【问题描述】:我想从智能手机图片中提取地理坐标。我们所有的照片都经过地理参考,并且该信息嵌入在某处的标题中。有matlab或python函数可以告诉我图片地理坐标吗? 我想写一个脚本来计算两张图像之间的距离,所以如果我可以提取两张照片的地理坐标,那么我就可以计算出距离。 谢谢
【问题讨论】:
真的吗?我想了解更多详情 howtogeek.com/211427/… 就是一个例子,只要您为您的设备开启定位服务。坐标以度分和秒的形式给出,因此您将不得不使用在线距离计算器或使用 hasrsine 或 Vincenty 计算的 python 程序......后者比您需要的多,因为 gps 接收器可能不是很准确 感谢您的帮助...看起来不错的资源 【参考方案1】:如果您想使用 MATLAB,有一个名为 imfinfo
的函数可以从图像文件中提取 exif 数据并将其保存在结构中。您可以在GPSInfo
字段中找到 GPS 信息。示例:
info = imfinfo('filename.png');
info.GPSInfo
然后,要访问各个纬度和经度值(以度、分、秒表示),您可以检查字段GPSLatitude
和GPSLongitude
:
info.GPSInfo.GPSLatitude
info.GPSInfo.GPSLongitude
【讨论】:
【参考方案2】:我建议调查http://python-pillow.org
以下枕头文档为您提供了获取所需内容的起点。
https://pillow.readthedocs.io/en/latest/reference/ExifTags.html#exiftags-module
【讨论】:
【参考方案3】:你可以使用外部工具吗?
使用jpegsnoop 或exiftools 提取一个txt 文件。我不记得确切的命令,但你可以很容易地找到它。这两种工具都有可用的可执行文件和代码。就个人而言,我更喜欢 jpegsnoop。
system('jpegsnoop.exe image/path ... output_image.txt);
读取包含地理标签的 txt 文件。最多可能有 7 个标签,不同的相机品牌使用不同的标签。其中,会选择geolocation(具体的名字我记不得了,但是名字中包含了经度和纬度)。
你可以通过一个简单的while循环来做到这一点:
while (line = readline) ~= EOF
if line.startsWith (geo-tags)
print line %or add to cell array etc.
根据我的经验,python 不如jpegsnoop
。
正如 NaN 所述,当您从智能手机拍照时,请确保 GPS 已开启。
【讨论】:
以上是关于从智能手机照片中提取地理坐标的主要内容,如果未能解决你的问题,请参考以下文章