当前位置:首页 » 编程语言 » pythongps

pythongps

发布时间: 2025-01-24 00:37:51

① 使用python实时将gps返回的经纬度转化为图片

主要就是做了两件事情:
1.生成一张有文本信息的JPG图片
2.写入EXIF信息

生成照片需要PIL和libjpeg

import Imageimport ImageDrawimport ImageFontdef create_pic(path, text=[], type='jpeg'):
img = Image.new("RGB", (2448, 3264), '#37b6ce')#颜色和大小
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('ziti.ttf', 120)#ttf是字体,120是字号
for h in range(0, len(text)):#多行文本
draw.text((256, 256 + 120 * h), text[h], font=font)
img.save(path, type)#保存
# img.show()

读写EXIF信息需要pyexiv2,获取google的经纬度需要geopy
顺便说下经纬度的表示:
一般exif里看到的都是这样的57°55'56.6",是度,分,秒这么展示的,google上获取来的是十进制的57.9323888888888
所以需要转换一下再写进去
公式:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888

etemplate=pyexiv2.ImageMetadata('IMG_4408.JPG')template.read()#exif信息很多,所以找个真正手机拍摄的照片当模版googlev3=geopy.GoogleV3()place,gps=googlev3.geocode(location)#获取gps信息,location写地名,比如‘北京王府井’,偶尔会被墙,最好挂个代理defset_exif(path,date_time=None,gps=()):
"""
datetime=2014:10:0412:41:38
geo=(lat=39.12315,lng=115.12231)
"""
metadata=pyexiv2.ImageMetadata(path)
metadata.read()
forkintemplate.exif_keys:
metadata[k]=pyexiv2.ExifTag(k,template[k].value)
ifnotdate_time:
date_str=pyexiv2.utils.exif(date_time)
metadata['Exif.Photo.DateTimeOriginal']=date_str
metadata['Exif.Photo.DateTimeDigitized']=date_str
metadata['Exif.Image.DateTime']=date_str
iflen(geo)>0:
c_lat=decimal2coordinate(geo[0],['S','N'])
c_lng=decimal2coordinate(geo[1],['W','E'])
metadata["Exif.GPSInfo.GPSLatitude"]=coordinate2rational(c_lat[0],c_lat[1],c_lat[2])
metadata["Exif.GPSInfo.GPSLatitudeRef"]=c_lat[3]
metadata["Exif.GPSInfo.GPSLongitude"]=coordinate2rational(c_lng[0],c_lng[1],c_lng[2])
metadata["Exif.GPSInfo.GPSLongitudeRef"]=c_lng[3]
else:
metadata._delete_exif_tag("Exif.GPSInfo.GPSLatitude")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLatitudeRef")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLongitude")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLongitudeRef")
metadata.write()defdecimal2coordinate(value,loc):
"""
loc=lat=>["S","N"],lng=>["W","E"]
retrunD,M,S,locate
"""
ifvalue<0:
loc_value=loc[0]
elifvalue>0:
loc_value=loc[1]
else:
loc_value=""
abs_value=abs(value)
deg=int(abs_value)
t1=(abs_value-deg)*60
min=int(t1)
sec=round((t1-min)*60,5)
return(deg,min,sec,loc_value)defcoordinate2rational(D,M,S):
return(fractions.Fraction(D,1),fractions.Fraction(int((M+S/60)*100),100),fractions.Fraction(0,1))

② Python卡尔曼滤波器OpenCV跟踪和预测物体的轨迹

在探索物体运动轨迹时,设想你在雾中驾驶车辆,依赖 GPS 提供速度和位置信息,但GPS难免会有误差。如何在不确定性中准确追踪位置?这就是卡尔曼滤波器的用武之地。这个精密工具通过两个步骤——预测和更新,处理不确定性信息。

预测阶段,卡尔曼滤波器采用数学公式[公式],基于当前状态和模型预测物体的下一状态。然后是更新阶段,[公式]则根据新的测量数据调整预测值,以减小误差。

在实际操作中,OpenCV 提供了一个易于使用的 KalmanFilter 类,帮助我们避开复杂的数学细节。这里,我们将运用OpenCV实现一个简单的2D物体运动的卡尔曼滤波,以便预测其位置。首先,设置滤波器的基本结构:

代码示例:

通过模拟直线移动的物体并添加随机噪声,我们观察其运动,然后运用卡尔曼滤波器进行轨迹估计。接下来,我们将展示真实路径、测量噪声以及滤波器估计结果的可视化。

代码解读:

通过图形化,你可以看到模拟的2D物体运动轨迹及其处理后的效果:

通过这段代码,你可以看到卡尔曼滤波器如何在跟踪物体运动时发挥作用,即使面对测量噪声,也能提供更精确的预测。深入研究源代码,你可以了解更多关于物体轨迹预测的细节:[参阅一] 和 [参阅二]。

热点内容
推特更改密码的用户名是什么 发布:2025-01-24 03:45:55 浏览:596
cc编译选项 发布:2025-01-24 03:45:18 浏览:511
银行密码怎么被锁 发布:2025-01-24 03:37:02 浏览:431
sql数据备份与恢复 发布:2025-01-24 03:35:36 浏览:228
dwordc语言 发布:2025-01-24 03:35:26 浏览:98
电脑配置管理器打不开怎么办 发布:2025-01-24 03:33:55 浏览:554
华为2600t存储 发布:2025-01-24 03:33:50 浏览:845
我的世界mc服务器损失 发布:2025-01-24 03:33:03 浏览:809
微信里如何使用方舟编译器 发布:2025-01-24 03:27:19 浏览:649
android点击图片放大 发布:2025-01-24 03:27:09 浏览:481