我是靠谱客的博主 要减肥硬币,最近开发中收集的这篇文章主要介绍Python大疆相片/航片/照片的内容信息获取:以m300为例JPG,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

代码及备注

b = b"x3cx2fx72x64x66x3ax44x65x73x63x72x69x70x74x69x6fx6ex3e"
a = b"x3cx72x64x66x3ax44x65x73x63x72x69x70x74x69x6fx6ex20"

aa=["x3cx72x64x66x3ax44x65x73x63x72x69x70x74x69x6fx6ex20"]
bb=["x3cx2fx72x64x66x3ax44x65x73x63x72x69x70x74x69x6fx6ex3e"]

#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"

最后

以上就是要减肥硬币为你收集整理的Python大疆相片/航片/照片的内容信息获取:以m300为例JPG的全部内容,希望文章能够帮你解决Python大疆相片/航片/照片的内容信息获取:以m300为例JPG所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部