python 三边测量定位的实现代码


Posted in Python onApril 22, 2021

定位原理很简单,故不赘述,直接上源码,内附注释。(如果对您的学习有所帮助,还请帮忙点个赞,谢谢了)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 16 10:50:29 2018
@author: dag
"""
import sympy
import numpy as np
import math
from matplotlib.pyplot import plot
from matplotlib.pyplot import show
import matplotlib.pyplot as plt
import matplotlib
#解决无法显示中文问题,fname是加载字体路径,根据自身pc实际确定,具体请百度
zhfont1 = matplotlib.font_manager.FontProperties(fname='/System/Library/Fonts/Hiragino Sans GB W3.ttc')
 
#随机产生3个参考节点坐标
maxy = 1000
maxx = 1000
cx = maxx*np.random.rand(3)
cy = maxy*np.random.rand(3)
dot1 = plot(cx,cy,'k^')
 
#生成盲节点,以及其与参考节点欧式距离
mtx = maxx*np.random.rand()
mty = maxy*np.random.rand()
plt.hold('on')
dot2 = plot(mtx,mty,'go')
da = math.sqrt(np.square(mtx-cx[0])+np.square(mty-cy[0]))
db = math.sqrt(np.square(mtx-cx[1])+np.square(mty-cy[1])) 
dc = math.sqrt(np.square(mtx-cx[2])+np.square(mty-cy[2]))
 
#计算定位坐标  
def triposition(xa,ya,da,xb,yb,db,xc,yc,dc): 
    x,y = sympy.symbols('x y')
    f1 = 2*x*(xa-xc)+np.square(xc)-np.square(xa)+2*y*(ya-yc)+np.square(yc)-np.square(ya)-(np.square(dc)-np.square(da))
    f2 = 2*x*(xb-xc)+np.square(xc)-np.square(xb)+2*y*(yb-yc)+np.square(yc)-np.square(yb)-(np.square(dc)-np.square(db))
    result = sympy.solve([f1,f2],[x,y])
    locx,locy = result[x],result[y]
    return [locx,locy]
    
#解算得到定位节点坐标
[locx,locy] = triposition(cx[0],cy[0],da,cx[1],cy[1],db,cx[2],cy[2],dc)
plt.hold('on')
dot3 = plot(locx,locy,'r*')
 
#显示脚注
x = [[locx,cx[0]],[locx,cx[1]],[locx,cx[2]]]
y = [[locy,cy[0]],[locy,cy[1]],[locy,cy[2]]]
for i in range(len(x)):
    plt.plot(x[i],y[i],linestyle = '--',color ='g' )
plt.title('三边测量法的定位',fontproperties=zhfont1)  
plt.legend(['参考节点','盲节点','定位节点'], loc='lower right',prop=zhfont1)
show() 
derror = math.sqrt(np.square(locx-mtx) + np.square(locy-mty)) 
print(derror)

输出效果图:

python 三边测量定位的实现代码

补充:python opencv实现三角测量(triangulation)

看代码吧~

import cv2
import numpy as np
import scipy.io as scio
if __name__ == '__main__':
    print("main function.")
    #验证点
    point = np.array([1.0 ,2.0, 3.0])
    #获取相机参数
    cams_data = scio.loadmat('/data1/dy/SuperSMPL/data/AMAfMvS_Dataset/cameras_I_crane.mat')
    Pmats = cams_data['Pmats']  # Pmats(8, 3, 4) 投影矩阵 
    P1 = Pmats[0,::]
    P3 = Pmats[2,::]
    #通过投影矩阵将点从世界坐标投到像素坐标
    pj1 = np.dot(P1, np.vstack([point.reshape(3,1),np.array([1])]))
    pj3 = np.dot(P3, np.vstack([point.reshape(3,1),np.array([1])]))
    point1 = pj1[:2,:]/pj1[2,:]#两行一列,齐次坐标转化
    point3 = pj3[:2,:]/pj3[2,:]
    #利用投影矩阵以及对应像素点,进行三角测量
    points = cv2.triangulatePoints(P1,P3,point1,point3)
    #齐次坐标转化并输出
    print(points[0:3,:]/points[3,:])

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
归纳整理Python中的控制流语句的知识点
Apr 14 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
Jan 29 Python
python获取地震信息 微信实时推送
Jun 18 Python
Python面向对象编程基础实例分析
Jan 17 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
浅谈Python中的继承
Jun 19 Python
Django3中的自定义用户模型实例详解
Aug 23 Python
python中的对数log函数表示及用法
Dec 09 Python
Python爬虫后获取重定向url的两种方法
Jan 19 Python
全网非常详细的pytest配置文件
Jul 15 Python
python如何读取.mtx文件
Apr 22 #Python
Python中tkinter的用户登录管理的实现
python爬虫之利用selenium模块自动登录CSDN
Python数据清洗工具之Numpy的基本操作
Python基础之Socket通信原理
python numpy中setdiff1d的用法说明
Apr 22 #Python
一行代码python实现文件共享服务器
Apr 22 #Python
You might like
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
php empty函数 使用说明
2009/08/10 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
php过滤敏感词的示例
2014/03/31 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
JS不完全国际化&本地化手册 之 理论篇
2016/09/27 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
vue实现购物车选择功能
2020/01/10 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python写的贪吃蛇游戏例子
2014/06/16 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
央视元宵晚会主持串词
2014/03/25 职场文书
教师教学评估方案
2014/05/09 职场文书
防汛工作情况汇报
2014/10/28 职场文书
升职感谢信
2015/01/22 职场文书
综合实践活动报告
2015/02/05 职场文书
大连导游词
2015/02/12 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
MySQL视图概念以及相关应用
2022/04/19 MySQL