滑动轨迹 曲线 python_python – 计算轨迹(路径)中的转折点/枢轴点

您可以使用

Ramer-Douglas-Peucker (RDP) algorithm来简化路径。然后,您可以计算简化路径每段的方向变化。对应于方向最大变化的点可以称为转折点:

RDP算法的Python实现可以在on github中找到。

import matplotlib.pyplot as plt

import numpy as np

import os

import rdp

def angle(dir):

"""

Returns the angles between vectors.

Parameters:

dir is a 2D-array of shape (N,M) representing N vectors in M-dimensional space.

The return value is a 1D-array of values of shape (N-1,), with each value

between 0 and pi.

0 implies the vectors point in the same direction

pi/2 implies the vectors are orthogonal

pi implies the vectors point in opposite directions

"""

dir2 = dir[1:]

dir1 = dir[:-1]

return np.arccos((dir1*dir2).sum(axis=1)/(

np.sqrt((dir1**2).sum(axis=1)*(dir2**2).sum(axis=1))))

tolerance = 70

min_angle = np.pi*0.22

filename = os.path.expanduser('~/tmp/bla.data')

points = np.genfromtxt(filename).T

print(len(points))

x, y = points.T

# Use the Ramer-Douglas-Peucker algorithm to simplify the path

# http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm

# Python implementation: https://github.com/sebleier/RDP/

simplified = np.array(rdp.rdp(points.tolist(), tolerance))

print(len(simplified))

sx, sy = simplified.T

# compute the direction vectors on the simplified curve

directions = np.diff(simplified, axis=0)

theta = angle(directions)

# Select the index of the points with the greatest theta

# Large theta is associated with greatest change in direction.

idx = np.where(theta>min_angle)[0]+1

fig = plt.figure()

ax =fig.add_subplot(111)

ax.plot(x, y, 'b-', label='original path')

ax.plot(sx, sy, 'g--', label='simplified path')

ax.plot(sx[idx], sy[idx], 'ro', markersize = 10, label='turning points')

ax.invert_yaxis()

plt.legend(loc='best')

plt.show()

以上使用两个参数:

> RDP算法采用一个参数,公差,其中代表简化路径的最大距离可能偏离原来的路径。公差越大,粗鲁的路径就越简单。>另一个参数是min_angle,它定义了被认为是一个转折点。 (我正在转弯点是原始路径上的任何一点,简化路径上的进入和退出向量之间的角度大于min_angle)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

metinfo mysql 数据表_《MetInfo网站管理系统》常见问题整理

1.MetInfo安装过程中的数据库名称、密码等参数如何填写?执行安装脚本的“第三步:数据库设置”,请依据注释配置空间服务商提供的数据库服务器、用户名、密码及数据库名。数据库参数MetInfo无法告诉你如何设置,需要根据服务器账号的…

设无向图g如图所示_阿里重磅发布大规模图神经网络平台 AliGraph,架构算法解读...

图神经网络 (GNN) 主要是利用神经网络处理复杂的图数据,它将图数据转换到低维空间,同时最大限度保留结构和属性信息,并构造一个用于训练和推理的神经网络。在实际应用中,为了加速 GNN 训练和新算法的快速迭代,设计一套…

mysql5.0.19_CentOS下升级MySQL5.0.19到5.5

系统环境:CentOS 5.5CentOS 5.5的源mysql目前还停留在5.0.19上,要做数据库主从的时候,必须升级到5.1以上。索性,直接到5.5吧1系统环境:CentOS 5.5CentOS 5.5的源mysql目前还停留在5.0.19上,要做数据库主从的…

基于点云的三维重建_香港科技大学王煜教授:深度学习在物体三维重建中的应用...

基于单幅图像的物体三维重建是计算机视觉领域的一个重要问题, 近十年来得到了广泛地关注. 随着深度学习的不断发展, 近年来逐渐成为一个新的学术研究热点问题.计算机视觉研究的主要目标之一是从二维图像复原三维结构. 二维图像是当今时代极易获取的数据形式, 互联网上每时每刻都…

ranger管mysql_添加Kafka的Ranger访问权限策略

设置Kafka管理员权限在首页中单击“Kafka”区域的组件插件名称,例如“Kafka”。选择“Policy Name”为“all - topic”的策略,单击按钮编辑策略。在“Allow Conditions”区域,单击“Select User”下选择框选择用户。单击“Add Permissions”&…

python twisted和flask_Python高效开发实战——Django、Tornado、Flask、Twisted(第2版)

上篇 Python基础第1章 Python基础知识2 1.1 Python综述3 1.1.1 了解Python的特性及版本3 1.1.2 安装Python5 1.1.3 使用Python原生编辑器8 1.1.4 使用Eclipse开发环境9 1.1.5 Python编程入门——解决“斐波那契数列”问题14 1.2 数据类型17 1.2.1 Number类型17 1.2.2 Sequence类…

lt;++mysql_php+js+mysql设计的仿webQQ-lt;1gt;邮箱验证

最近用phpjsmysql做了一个仿webQQ的课程设计&#xff0c;收获很多&#xff0c;现在将关键的技术总结一下&#xff0c;供大家学习交流。<1>邮箱验证用户在注册的时候&#xff0c;会在文本框里输入邮箱&#xff0c;这个时候通过文本框的onblur和onchange事件用Ajax无刷新技…

ubuntu安装python3.6_Ubuntu上安装python3.6以及多版本python管理 | SQN

这篇文章记录了如何在Ubuntu上安装python3.6以及将其设置为系统默认。 查看Ubuntu版本 由于python3.6在不同的Ubuntu版本中的安装是不一样的&#xff0c;这里我们先来看一下的Ubuntu的版本&#xff0c;在terminal中输入lsb_release -a即可查看&#xff0c;例如我的Ubuntu版本为…

mysql 5.7 redo replacation_mysql replace

Oracle MySQL相关工具replace操作实现方式区别数据导入工具中的replace1&#xff0c;oracle impdp 导入数据的表已存在指定TABLE_EXISTS_ACTION参数&#xff0c;如果目标库存在相同名称的表&#xff0c;执行下面的操作1) skip&#xff1a;默认跳过这张表&#xff0c;继续下一个…

mysql数据库open函数_C#访问Mysql数据库方法,以及库函数

先说说在C#当中需要准备的工作吧。在这里我分为了四个步骤&#xff1a;1.网上下载MySql.Data.dll2.在项目当中添加引用MySql.Data.dll3.在操作类当中添加&#xff1a;using MySql.Data;using MySql.Data.MySqlClient;4&#xff0e;接下来就是具体的函数了同时&#xff0c;在这里…

vue @click 多个事件_VUE学习记录3

v-on的基本使用​ 在前面的计数器案例中使用了v-on:click监听单击事件。这里在回顾一下&#xff1a;<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-w…

mysql的日志迁移到mango_mysql 向mongo迁移备忘

由于之前涉及mysql分表&#xff0c;把用户所关联的各种数据&#xff0c;我们暂设定为abcd,代表四种业务比如userid 为1 &#xff0c;可能属于 a1表&#xff0c;a2表&#xff0c;b3表&#xff0c;d4表。现在要统一改为mongo实现在user表中有一个abcd字段&#xff0c;类型是数组&…

cas登录成功后不跳转成功页面_SpringSecurity用户登录成功后页面跳转原理剖析

Spring Security 框架在用户成功登录后的处理逻辑&#xff0c;相对来说比较复杂&#xff0c;比较绕&#xff0c;下面我们就关键逻辑&#xff0c;进行相关分析。首先&#xff0c;框架默认的 AuthenticationSuccessHandler 为 SavedRequestAwareAuthenticationSuccessHandler。判…

python萤火虫算法_FA:萤火虫算法的测试及Python实现

一、Python中传递函数def Test(a,b):print(a,b)class TEST:def __init__(self, FitnessFunction):self.FitnessFunction FitnessFunctiondef initial(self):self.FitnessFunction(1,2)if __name__ __main__:fa TEST(Test)fa.initial()二、常用优化算法测试函数及实现这里学到…

android pdf阅读器开发_如何在 Windows 10 中将 Firefox 设置为默认 PDF 阅读器

PDF 作为办公一族中的必备文档&#xff0c;很多人都会编辑或者创建 PDF 文档&#xff0c;而在 Windows 系统中并没有默认的 PDF 阅读器。而在新版的 Microsoft Edge微软已在开始提供有真正的高级 PDF 控件&#xff0c;从而使用户可以正常使用文档而无需其他专用 PDF 阅读器应用…

shell脚本和python脚本和go脚本的区别_Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例-Go语言中文社区...

NodeJS 子进程提供了与系统交互的重要接口&#xff0c;其主要 API 有&#xff1a;1)标准输入、标准输出及标准错误输出的接口&#xff1b;child.stdin 获取标准输入child.stdout 获取标准输出child.stderr 获取标准错误输出2)获取子进程的PID&#xff1a;child.pid提供生成子进…

js文件中怎么使用thymeleaf标签_007、Spring Boot集成Thymeleaf模板引擎

1. Thymeleaf 介绍Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。Thymeleaf 的主要目标是为您的开发工作流程带来优雅的自然模板 - 可以在浏览器中正确显示的HTML&#xff0c;也可以用作静态原型&#xff0c;从而在开发团队中实现更强大的协作。 以上翻译自…

python删除txt指定内容_正则表达式使用python从文件中过滤和删除特定的多行文本...

我正在编写一个python工具来处理一组文件.该工具将由其他用户而非我使用. 文件类似于以下格式&#xff1a; #Text which I want to keep intact #Lots of text #Lots and lots of text #Lots and lots and lots of other text #Then in-between the file I have text in this f…

java英语词汇_java常用的英语单词

java常用的英语单词神秘的jave应该记住的英语单词有哪些呢?单词这么多&#xff0c;小编表示也很困扰。不过小编还是为大家整理出来了一些jave常用的英语单词&#xff0c;减轻大家负担。public[pʌblik] 公共的,公用的static[sttik] 静的;静态的;静止的void&#xff1a;[vɔid]…

python语言中包含的标准数据类型_python标准数据类型(笔记一)

关于python&#xff0c;它是一种解释型&#xff0c;面对对象&#xff0c;带有动态语义的高级程序设计语言。 之前学习python的时候&#xff0c;简单的将python的基础内容过了一遍&#xff0c;然后在工作中需要用到什么就相应的去加深某一模块的需求以及应用&#xff0c;总觉得基…