从智能手机照片中提取地理坐标

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

然后,要访问各个纬度和经度值(以度、分、秒表示),您可以检查字段GPSLatitudeGPSLongitude

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 已开启。

【讨论】:

以上是关于从智能手机照片中提取地理坐标的主要内容,如果未能解决你的问题,请参考以下文章

基于 Google-S2 的地理相册服务实现及应用

地理定位在笔记本电脑上工作,但不在智能手机上

手机相册照片智能分类系统

手机相册照片智能分类系统

怎样用手机提取UI?

人体姿势估计/匹配在智能手机上