JPG图像exif和XPM信息中GPS数据姿态数据航向角数据的提取

2023-05-16

JPG图像的编码相关内容太多不在多说了大家随手能查很多资料。
今天重点说说图像数据中的GPS信息以及飞机、相机姿态角度数据提取。
JPG作为复杂的图像数据很多人都知道存在一个叫做EXIF的数据规范,在这个数据规范中,包含了相机数据、拍摄数据、厂家信息以及GPS信息这样很多个数据信息,其中已经有GPS信息,当然,这是按照EXIF信息元的标准来写入的,查相关资料还是比较充分,整个这个部分总体的概念就是一个像二叉树又不像二叉树的链表,从前到后整体是顺序存储的,一般格式如下
在这里插入图片描述上图中A是标志标示字,B是类型标识,C和D是变化的,一般情况C标示数据长度,而D一定注意,如果B所指类型是简单值则D就是对应的数值,如果B的所指的值是一个复杂数据或者可能是多组属于的,则D项应该是这些数据被存储的位置的偏移量(该偏移量还不包括前面标示本节开始的标志字之前的那些存储区域)
无论如何,这样的方式中找到常规的EXIF数据还是比较简单的,例如下图中就给出一个JPG图像开头部分的数据示意图;
图中有JPG标志字,后面有本节数据长度,注意A598这个数字在查找完本节侯如果查找下一节(XPM数据)时候要用。
在这里插入图片描述注意上图中的GPS标识数据2588,这就是一个典型的指针概念,这个数据区域要按照前一个小图数据理解,尤其是第D组数据,起始就是告诉你GPS信息在后面你要再用给你的偏移量去寻找了。
当然了,找到GPS所在位置之后,还是记得,一定要按照第一个小图(ABCD四组数)的概念去解读,当然,里面具体经纬度数据给你的优势一个偏移地址,你还要再次去OFFSET去读数据计算的。(读者是不是觉得这个操作很烦,的确很烦,但这样的规定的确有他的好处的)

当然,说到这里,其实也就是很多人心目中如何寻找JPG图片里面的GPS数据了
【事实上,GPS数据在JPG文件中可能会有两处的】
第二种读取GPS数据的方法就是读取第二节数据,第二节数据往往是XPM数据,这种数据元被定义成了一种开放模式,大疆无人机的数据正是利用了XPM的开放模式把自己的GPS信息直接写入了JPG图像文件。
当然,写入图像文件的不仅仅是GPS数据,起始还有相机拍照时候的倾斜角度、拍照时候飞机的航向角等等数据,总体上可以看到如下所示的数据:

GpsLatitude
GpsLongitude
AbsoluteAltitude
RelativeAltitude
GimbalRollDegree
GimbalYawDegree
GimbalPitchDegree
FlightRollDegree
FlightYawDegree
FlightPitchDegree
有意思的是这些数据被以XML的格式写入了JPG图像文件的XPM数据段中

从下面这个XPM节中可以看到
开始的位置就是第一节(基本节)的长度A598加上字头4个字节,然后就可以看到标示位FFE1了,后面紧跟本节的数据总长度,那么,在这个节里面,就能看到DJI的数据项目,后面的内容,我相信,能理解如何找到XPM信息节的入口和得到他的总数据段长度,从中获得各个项应该不是难事了。
在这里插入图片描述最后,把我写完的测试程序传上来大家可以看看,小工具不依赖任何开发框架或者运行组件,只要WINDOWS就能正常使用。
在这里插入图片描述
【附件】:实用工具下载(免安装,不依赖任何开发运行环境,不需要任何组件,无任何广告嵌入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPG图像exif和XPM信息中GPS数据姿态数据航向角数据的提取 的相关文章

  • Android 将阿拉伯数字转换为英文数字

    我从 GPS 收到以下错误 Fatal Exception java lang NumberFormatException Invalid double 现在 这是我通过 Fabric 从用户处收到的错误 它看起来像阿拉伯语 所以我猜只有当
  • 使用 Android.Xamarin 查找纬度和经度

    我正在尝试在 Android Xamarin 中开发商店定位器应用程序 我的第一步是找到我所在位置的纬度和经度 但我的模拟器 设备屏幕没有显示任何内容 我有我的uses permissions set to
  • Python:从图像中删除 Exif 信息

    为了减小网站中使用的图像大小 我将质量降低到 80 85 这在一定程度上大大减小了图像尺寸 为了在不影响质量的情况下进一步减小尺寸 我的朋友指出 来自相机的原始图像有很多称为 Exif 信息的元数据 由于网站中的图像不需要保留此 Exif
  • 如何提取 MVIMG 的照片/视频组件?

    Google Pixel 2 以及此后可能的其他手机都具有覆盖 动态照片 的功能 这些保存为MVIMG并且比较大 我正在寻找一种删除 提取视频的方法 到目前为止我发现了一个有前途的 exif 标签 exiftool xmp all MVIM
  • 在带有校准点的地图上将经度和纬度转换为 X Y

    如果我有一张尺寸为 sizeX sizeY 的 jpeg 地图 以及地图上的一些校准点 X Y 经度 纬度 使用给定的经度 纬度对计算地图中相应 XY 点的算法是什么 这对我有用 没有那么多废话 int x int MAP WIDTH 36
  • 设置模拟位置时 GPS 提供商未知错误?

    我正在尝试设置我的模拟位置 但是 我收到以下错误 提供商 gps 未知 并且不确定出了什么问题 我已经获得了在manifest xml 中声明的所有权限以及所有参数 模拟定位法 Initiates the method to set the
  • GMSPolyline 非常大的内存峰值

    在允许用户在各种不同类型的地图上显示我们称之为轨迹的复杂位置点列表的 GPS 应用程序中 每个轨迹可以包含 2k 到 10k 个位置点 当轨迹在非 Google 地图类型上呈现时 它们会被大量剪切 修剪和路径简化 这是为了降低内存使用量并提
  • 如何显示有关图像的所有元数据?

    我正在尝试使用 Pillow 读取图像的元数据TAGS功能 我使用以下代码来获取此信息 imports from PIL import Image from PIL ExifTags import TAGS imagename image
  • GPS 坐标(以度为单位)来计算距离

    在iPhone上 我以十进制度数获取用户的位置 例如 纬度39 470920和经度 0 373192 也就是A点 我需要用另一个 GPS 坐标 同样以十进制表示 B 点创建一条线 然后 计算从 A 到 B 的线与另一个点 C 之间的距离 垂
  • 如何将 EXIF/其他元数据插入到存储在内存缓冲区中的 JPEG 中?

    我使用 Python OpenCV 创建了一个 JPEG EXIF 数据在此过程中丢失 并且在调用 imwrite 时显然无法重新添加 参考 在python中使用opencv编辑图像时无法保留图像exif数据 https stackover
  • React Native Android 位置请求超时

    在 IOS 中查找 GPS 坐标时没有问题 效果很好 Android 端不如 IOS 稳定 在真机和模拟器中都会出现这个问题 有时它可以找到位置 但有时却找不到 寻找了3天 但没有找到解决方案 当我的应用程序无法找到我的位置时 我尝试通过谷
  • 根据 GPS 坐标计算平均速度的最佳实践

    我这里有一个可以给我 GPS 坐标的设备 我可以定义的时间间隔 我想用它来计算驾驶或驾车旅行时的平均速度 实际上 我使用了正交公式来计算两点之间的距离 然后将其除以给定的时间间隔 通过我遵循的实施这个词 http de wikipedia
  • Android 中如何在不使用 getLastKnownLocation 方法的情况下获取当前的纬度和经度?

    我正在尝试获取current手机的位置 为此我使用GPS追踪器教程 http www androidhive info 2012 07 android gps location manager tutorial 问题总是使用该方法getLa
  • 如何将timestamp_t转换为实际时间?

    我见过很多使用 time t 的例子 但 timestamp t 让我感到困惑 我正在做一个作业 我们需要打印出 GPS 数据 并且 GPS 设备返回一个类型 timestamp t 来表示它的时间戳和纪元时间 我尝试过使用 gmtime
  • GPS 坐标(以度为单位)来计算距离

    在iPhone上 我以十进制度数获取用户的位置 例如 纬度39 470920和经度 0 373192 也就是A点 我需要用另一个 GPS 坐标 同样以十进制表示 B 点创建一条线 然后 计算从 A 到 B 的线与另一个点 C 之间的距离 垂
  • Android:计算两个位置之间距离的最佳方法

    我在这个主题上做了一些研究 但有很多观点并没有给出一个清晰的图像 我的问题是这样的 我正在为 Android 开发一个基于 GPS 的应用程序 在其中我想实时了解 Android LocationManager 指定的当前位置与其他位置之间
  • 使用 Google 电子表格中的脚本从手机获取我的当前位置

    有没有办法使用 Google Apps 脚本从手机的 GPS 数据中获取我的当前位置 纬度和经度 最好是十进制形式 另外 是否可以打开和关闭 GPS 或者至少检测它是否打开或关闭 这是我尝试做的 我带着电动助力车去一些地方 在每个地方我都会
  • 如何在 Android 中像 Google 地图一样获得持续的位置更新?

    我正在构建一个朋友跟踪 Android 应用程序 当我的朋友激活应用程序并带着他的 GPS 和蜂窝数据离开时 我需要在我的设备上跟踪他 这就是这个概念 我已经实现了 LocationListener 类 现在我可以从 Gps 或网络获取最后
  • 向 tk103 GPS 跟踪器发送命令

    我正在使用 php 开发实时 GPS 跟踪器 Web 应用程序 跟踪器参考号是tk103 我可以从跟踪器接收信息并将其存储到数据库中 设备的 GPRS 模式已启用 我的问题是 如何使用 php ini 将命令从服务器发送到设备 提前致谢 这
  • 如何找到特定路线上两点之间的距离?

    我正在为我的大学开发一个 Android 应用程序 可以帮助学生跟踪大学巴士的当前位置 并为他们提供巴士到达他们的预计时间 截至目前 我获取了公交车的当前位置 通过公交车上的设备 和学生的位置 我陷入了必须找到两个 GPS 坐标之间的距离的

随机推荐

  • 深度学习之BP神经网络

    深度学习之BP神经网络 BP xff08 Back Propagation xff09 网络是1986年由Rumelhart和McCelland为首的科学家小组提出 xff0c 是一种按误差逆传播算法训练的多层前馈网络 它的学习规则是使用最
  • 【ROS】源码分析-消息订阅与发布

    说明 本文通过NodeHandle subscribe和Publication publish 源码作为入口 xff0c 来分析PubNode SubNode之间是网络连接是如何建立的 xff0c 消息是如何发布的 xff0c topic队
  • Opencv-cvtColor

    cvtColor不是cv的成员 头文件的问题 include lt opencv2 opencv hpp gt 这个就可以
  • java听课笔记——9.25

    记录今天所学的东西 xff1a 1 Random 用于随机生成一个值 xff0c 可以有限定范围 xff0c 没有尝试过不设限制的随机 用法如下 xff1a Random random 61 new Random int temp 61 r
  • java听课笔记——10.09

    1 局部变量和全局变量 xff1a 2 匿名内部类比较和外部比较 匿名内部类的比较 xff0c 即在需要进行比较的类名后加上implements comparator lt 类名 gt 然后 xff0c 使用sort xff0c 对于sor
  • java听课笔记——10.10

    1 String与常量池 xff1a 常量池是java中的一个存储常量的存储器 xff0c 栈是一个临时的存储器 xff0c 在递归的时候比较明显 xff0c 函数的运行压缩在栈里 String str3 61 new String 34
  • Java听课笔记——10.30

    感觉今天没讲什么东西唉 一开始 xff0c 解释了一下ArrayList里的每个元素如果不进行类型约束的话 自然赋值为Object类 xff0c 而且是兼收并蓄的 同时讲了使用迭代器对ArrayList数组进行遍历 xff0c 直接上代码
  • 如何在Python中声明一个数组?

    如何在Python中声明数组 xff1f 我在文档中找不到任何对数组的引用 1楼 这个怎么样 gt gt gt a 61 range 12 gt gt gt a 0 1 2 3 4 5 6 7 8 9 10 11 gt gt gt a 7
  • openrave0.9安装遇到依赖问题及解决流程

    问题 cmake 时输出下面的失败信息 xff0c 虽然最后可以make install xff08 其实就是拷贝了库文件 xff09 安装上 xff0c 但是由于过程中有些步骤失败 xff0c 导致执行时缺少一些库文件 xff0c 无法执
  • Python入门--一篇搞懂什么是类

    写一篇Python类的入门文章 xff0c 在高级编程语言中 xff0c 明白类的概念和懂得如何运用是必不可少的 文章有点长 xff0c 3000多字 Python是面向对象的高级编程语言 xff0c 在Python里面 一切都是对象 xf
  • SQL Server访问远程数据库--使用openrowset/opendatasource的方法

    一 使用openrowset opendatasource前首先要启用Ad Hoc Distributed Queries xff0c 因为这个服务不安全SqlServer默认是关闭的 SQL Server 阻止了对组件 39 Ad Hoc
  • 我的2014碎碎念—学习篇、实习篇、工作篇、生活篇

    继去年作了一次年度总结过后 xff0c 我就发誓说以后每年年末都要做一次总结 xff0c 这对自己是非常有帮助的 xff0c 无奈由于天性懒散 xff0c 2015年都过去好几天了 xff0c 才花了点心思整理下自己在过去一年里的所得所失
  • 百度2014研发类校园招聘笔试题解答

    先总体说下题型 xff0c 共有3道简答题 xff0c 3道算法编程题和1道系统设计题 xff0c 题目有难有易 xff0c 限时两小时完成 一 简答题 动态链接库和静态链接库的优缺点轮询任务调度和可抢占式调度有什么区别 xff1f 列出数
  • CSDN-markdown语法之如何插入图片

    目录 图片上传方式 插入在线图片插入本地图片图片链接方式 行内式图片链接参考式图片链接几个问题探讨 问题1 xff1a 图片上传和图片链接两种方式的区别 问题2 xff1a Markdown中如何指定图片的高和宽 xff1f 问题3 xff
  • 京东2013校园招聘软件研发笔试题

    时间 xff1a 2012 9 11 地点 xff1a 川大 我只能说第一家公司 xff0c 不是一般的火爆 不得不吐槽一下 xff1a 京东宣讲完全没有计划 xff0c 只看到个下午两点半宣讲 xff0c 结果跑过去 xff0c 下午两点
  • C运行时库函数和API函数区别

    C运行时库函数 是指 C语言本身支持的一些基本函数 xff0c 通常是汇编直接实现的 API函数是操作系统提供给用户方便设计应用程序的函数 xff0c 实现一些特定的功能 xff0c API函数也是C语言的函数实现的 他们之间区别是 xff
  • Docker常用命令详解

    docker命令大全 命令说明docker attach将本地标准输入 输出和错误流附加到正在运行的容器docker build从 Dockerfile 构建镜像docker builder管理构建docker checkpoint管理检查
  • PIX飞控中POS数据读取方法(实用工具)

    前些日子用到PIX飞控 xff0c 后来急用生成的日志需要导出里面的POS数据 xff0c 结果发现比较麻烦 xff0c 网上教程倒是很多 xff0c 对于不同版本的地面站情况又不一样 xff0c 当时就那样导出来简单用了用 xff0c 今
  • 在不丢失堆栈跟踪的情况下重新抛出Java中的异常

    在C xff03 中 xff0c 我可以使用throw 保留堆栈跟踪时重新抛出异常的语句 xff1a try catch a href http www javaxxz com thread 368216 1 1 html Exceptio
  • JPG图像exif和XPM信息中GPS数据姿态数据航向角数据的提取

    JPG图像的编码相关内容太多不在多说了大家随手能查很多资料 今天重点说说图像数据中的GPS信息以及飞机 相机姿态角度数据提取 JPG作为复杂的图像数据很多人都知道存在一个叫做EXIF的数据规范 xff0c 在这个数据规范中 xff0c 包含