前言:项目需要直接读取大疆无人机JPG的位置和云台信息,对网上现有代码进行注释和个人解读

JPG作为复杂的图像数据很多人都知道存在一个叫做EXIF的数据规范,
在这个数据规范中,包含了相机数据、拍摄数据、厂家信息以及GPS信息这样很多个数据信息,其中已经有GPS信息,当然,这是按照EXIF信息元的标准来写入的,查相关资料还是比较充分,整个这个部分总体的概念就是一个像二叉树又不像二叉树的链表,从前到后整体是顺序存储的读取图片的EXIF,得到EXIF标签(dict类型)

代码及备注

b = b"\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e"
a = b"\x3c\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20"aa=["\x3c\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20"]
bb=["\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e"]#xml format to save EXIF的数据规范
# aa ['<rdf:Description ']
print("aa",aa)
# bb ['</rdf:Description>']
print("bb",bb)# rb是读取二进制文件
img = open("DJI_202207301342_003/DJI_20220730141505_0001.JPG", 'rb')
# bytearray() 方法返回一个新字节数组
data = bytearray()
#标识符,
flag = Falsefor i in img.readlines():# 按行读取二进制信息,标签成对出现if a in i:flag = Trueif flag:#把第i行数据复制到新数组中data += iif b in i:break
print("data",data)if len(data) > 0:data = str(data.decode('ascii'))print(data)#filter()函数用于过滤序列,过滤掉不符合条件的元素,返回符合条件的元素组成新列表。#filter(function,iterable) ,function -- 判断函数。iterable -- 可迭代对象#python允许用lambda关键字创造匿名函数。# 在 lambda 关键字之后、冒号左边为参数列表,可不带参数,也可有多个参数。若有多个参数,则参数间用逗号隔开,冒号右边为 lambda 表达式的返回值。#left--->right# judge condition 'drone-dji:' in xlines = list(filter(lambda x: 'drone-dji:' in x, data.split("\n")))print("lines",lines)dj_data_dict = {}for d in lines:# remove 'drone-dji:'d = d.strip()[10:]# k is name# v is valuek, v = d.split("=")print(f"{k} : {v}")dj_data_dict[k] = v

结果

Version : "1.4"
GpsStatus : "RTK"
AltitudeType : "RtkAlt"
GpsLatitude : "+27.137487969"
GpsLongitude : "+102.926637049"
AbsoluteAltitude : "+1546.755"
RelativeAltitude : "+684.239"
GimbalRollDegree : "+180.00"
GimbalYawDegree : "-7.00"
GimbalPitchDegree : "-89.90"
FlightRollDegree : "-0.40"
FlightYawDegree : "+173.30"
FlightPitchDegree : "+13.70"
FlightXSpeed : "-0.3"
FlightYSpeed : "0.0"
FlightZSpeed : "-0.1"
CamReverse : "0"
GimbalReverse : "0"
SelfData : ""
RtkFlag : "50"
RtkStdLon : "0.01420"
RtkStdLat : "0.01224"
RtkStdHgt : "0.07425"
RtkDiffAge : "2.00000"
SurveyingMode : "1"
UTCAtExposure : "2022-07-30T06:15:26.334846"
ShutterType : "Mechanical"
ShutterCount : "100708"
CameraSerialNumber : "3XMDJBS001Y205"
LensSerialNumber : "01JY113G039P"
DroneModel : "Matrice 300 RTK"
DroneSerialNumber : "1ZNBJAB00C00MC"

Python大疆相片/航片/照片的内容信息获取:以m300为例JPG相关推荐

  1. python大疆EP

    目录 下单 专用库 安装库 引库 大疆EP主要函数 1.robomaster.chassis(EP 底盘模块) (1)drive_speed(x=0.0, y=0.0, z=0.0, timeout= ...

  2. python12306源码_春运了,Python大神分享爬取12306车票信息的例子,附抢票源码

    爬虫:爬虫的根本就是得到一个网页的源代码数据.更深入一些,就会出现和网页进行POST交互从而获取服务器接收POST请求后返回的数据!总结:爬虫就是由计算机自动与服务器交互获取数据的工具.(爬虫请注意网 ...

  3. python通过xpath读取html指定的内容并获取该部分html代码

    有时候我们并不想要网页中的具体文字内容,而是某一部分的HTML代码: <div class="pageContent"><p style="text-i ...

  4. 通过Exiv2读取照片的Exif信息获取GPS,焦距等信息

    这里简单介绍一下如何通过开源C++工具包Exiv2读取图片中的属性信息 其实做这项工作之前也想偷懒百度一下的,大都是Java写的安卓的 ExifInterface 类,这和我的工作扯不上一点关系啊,最 ...

  5. Pix4Dmapper拼接处理大疆H20T无人机热红外成像照片(生成正射影像)

    相机已经有不少朋友对大疆的M300 RTK加禅思H20T混合相机这套经典组合不陌生了. 这套设备虽然比较适用于各种现场勘查调查,热成像追踪,实时查看等,但是这套系统其实也可以用于航拍正射影像,正射热红 ...

  6. 基于大疆EP和Opencv完成人脸跟随项目

    基于大疆EP和Opencv完成人脸跟随项目 知识储备 实现步骤 环境安装 具体步骤 总体代码 知识储备 我们需要了解三方面的知识,第一方面是python的语法结构,也是最基础的,第二方面是opencv ...

  7. 2022年Python+大数据学习路线图,源码笔记,最优学习资源

    任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标.Python+大数据所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的Python+大数据学习路线图,帮 ...

  8. 源代码遭泄露,大疆员工被罚20万,判刑半年。

    源代码,是公司千方百计誓死保护的对象. 众所周知,源代码意味着高新企业的财产权.竞争力甚至生命线. 最近,有没有听到过关于"大疆因前员工泄露公司源代码造成超百万损失"的传闻? 在没 ...

  9. 突发!美国财政部、商务部双双出手制裁!大疆、旷视等8家被列入投资黑名单!34家被拉入实体清单,GPU龙头景嘉微在列!...

    EETOP 12月17日报道,16日晚间,美国财政部和美国商务部双手出手制裁中国公司及实体! >>>> 美国财政部制裁8家中国企业 当地时间12月16日,美国财政部将8家中国科 ...

最新文章

  1. swift 跳转网页写法
  2. FPGA之道(29)VHDL的串行语句
  3. 汇编原理实验--输出ASCII码10H到100H
  4. 程序员基本功03常见JAVA集合的实现细节
  5. 服务器日志显示意外关闭,服务器事件日志
  6. Hadoop基础-Hdfs各个组件的运行原理介绍
  7. MySQL定义数据库对象之指定definer
  8. 前端拆分_如何在消费者驱动的合同测试的帮助下拆分前端和后端的部署
  9. Golang程序性能分析(一)pprof和go-torch
  10. 爱不释手(Typingfaster)1.82beta ,请试用并反馈,谢谢
  11. 不招聘数据科学家的 7 个理由!
  12. coreldraw水涟漪怎么做_不懂怎么挑选水处理设备?跟贝斯沃了解这3点再做决定,轻松挑出适合自己的...
  13. 绝大多数程序员不会测试
  14. 最燃黑客情报官薛锋:端起AK伏特加,代表人民把坏人抓
  15. 携程Java后台开发面经
  16. 租户管理门户登录报错,提示身份验证失败
  17. Lync 2010升级到Lync 2013之设定Lync Mobile!
  18. java的向下转型_Java 向上/向下转型浅析
  19. Flink(五):watermark简介
  20. delphi 控件大全(确实很全)

热门文章

  1. Glide的使用回收内存问题
  2. Unknown column 'JOIN.id' in 'order clause'和 Unknown column 'XXXX.id' in 'order clause'的解决办法
  3. Java总结13 Lambda表达式 和 方法引用 的概念与应用
  4. 恒生电子工作、学习经验总结#3
  5. Essential Google Cloud Infrastructure: Foundation
  6. NAT的两种模式SNAT和DNAT介绍
  7. Week of 2.7
  8. ajax contentType 设置
  9. 【Atcoder】Atcoder Beginner Contest 50
  10. 机器学习关键步骤(四)