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

前言:项目需要直接读取大疆无人机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 = False

for i in img.readlines():
    # 按行读取二进制信息,标签成对出现
    if a in i:
        flag = True
    if flag:
        #把第i行数据复制到新数组中
        data += i
    if 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 x
    lines = 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 value
        k, 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"

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
大疆M300是一款专为工业应用而设计的高性能无人机。它具备卓越的飞行稳定性和可靠性,可以适用于各种复杂环境和任务要求。 在面试时,我会通过以下几个方面来回答有关大疆M300的问题: 首先,我会简要介绍大疆M300的基本参数和性能特点。例如,我会提及它的最大飞行高度、续航时间、载荷能力等重要指标,以及它采用的多重传感器系统和智能飞行控制算法。这些指标可以有效展示出M300在工业应用方面的优势。 接下来,我会重点讲解M300的工业应用场景。例如,我会提到它在电力巡检、通信基站维护、植保喷洒等领域的广泛应用。我可以详细讲解M300在这些领域的优势和实际效果,例如它能够高效完成巡检任务、减少人力和时间成本以及提升工作安全性等。 然后,我会着重介绍M300的智能特性和可升级性。例如,大疆M300可以配备DJITM Airsense系统,实现主动避障功能,并可以根据具体任务需求选择不同载荷,如热像仪、光学相机或LiDAR等。此外,我可以介绍M300支持的D-RTK RTK导航和Android SDK开发等特色功能。 最后,我会谈谈我个人对大疆M300的看法和应用前景。我认为,随着无人机技术的不断发展,大疆M300有望成为工业领域的首选无人机。它的先进性能、可靠性以及丰富的工业应用场景,将为各行业提供更高效、安全和可靠的解决方案。 总之,我对大疆M300充满信心,并且相信它的出色性能和广泛应用前景将为工业领域带来更多的巨大机会和发展潜力。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值