【CV】计算两个向量的夹角,并使用 OpenCV 可视化弧线

背景

基于人体/动物,骨骼点数据,计算关节角度

1. 原理

计算两个向量的夹角,我们已三个点为例,BA 向量和BC向量,求 B 的角度。若为四个点,延长交叉即可。
在这里插入图片描述

2. 效果

效果图如下

请添加图片描述

3. 核心代码

def compute_vector_angle(a, b, c):
    """
    计算两个向量 ba 和 bc 向量的夹角
    @params a , 点 a
    @params b , 点 b
    @params c , 点 c
    """
    # 我这里为了好理解使用三个点数据,也可以用四个点
    triangle_data = [a, b, c]
    # 向量夹角
    ba_angle = math.atan2(a[1] - b[1], a[0] - b[0]) * 180 / math.pi
    bc_angle = math.atan2(c[1] - b[1], c[0] - b[0]) * 180 / math.pi
    b_angle = 0
    if ba_angle * bc_angle >= 0:
        # 第1,4象限
        b_angle = abs(ba_angle - bc_angle)
    else:
        # 第2,3象限
        b_angle = abs(ba_angle) + abs(bc_angle)
        if b_angle > 180:
            b_angle = 360 - b_angle
    print("\nba_angle:", ba_angle, "bc_angle:", bc_angle, "angle:", b_angle)
    start_angle = ba_angle
    end_angle = bc_angle
    return start_angle, end_angle, b_angle, triangle_data

4. 可视化

图像可视化,坐标和圆的坐标系如下,

  • 坐标系,相反
  • 圆坐标系,逆时针,如图所示
    在这里插入图片描述

5. 全部代码

实现 Python 代码,可直接执行,C++ 同理实现

#!/usr/bin/env python
# -

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity中BRP下的深度图

文章目录 前言一、在Shader中使用1、在使用深度图前申明2、在片元着色器中 二、在C#脚本中开启摄像机深度图三、最终效果 前言 在之前的文章中,我们实现了URP下的深度图使用。 Unity中URP下使用屏幕坐标采样深度图 在这篇文章中,我们来看一下BRP下深度…

【PB续命07】JDBC连接达梦数据库

JDBC(Java DataBase Connectivity) 称为Java数据库连接,它是一种用于数据库访问的应用程序API,由一组用Java语言编写的类和接口组成,有了JDBC就可以用同一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。 有了…

无线网卡怎么连接台式电脑?正确操作步骤分享!

“我在使用电脑时经常都需要用到网络,请问大家在使用无线网卡时怎么将它与台式电脑进行连接的呢?” 使用电脑的用户在进行网上冲浪时都需要先连接网络。如果不想使用网线,无线网卡不仅可以为用户提供网络服务,在使用时该更加灵活和…

实战:低代码表单引擎助力文件上传与数据处理

在当今的信息化时代,数据已成为企业的重要资产。为了更好地管理和利用这些数据,许多企业开始采用表单上传组件来导入和处理数据。通过使用表单上传组件,用户可以方便地将文件上传至系统中,然后进行后续的数据处理和分析。这种方式…

Java零基础教学文档第一篇:JavaSE(3)

接上期后续 本期继续分享尚未结束的JavaSE章节 JavaSE属于初入门阶段,内容很多~ 但很基础, 大家需保持耐心,慢慢的学~ 争取你们学习的速度! 跟上我更新的速度哦~ 今日新篇章 流程控制语句 【主要内容】 if单选结构 if双选结构…

适合培训协会搭建的培训机构管理系统开发方案

一、项目背景与目标 (一)项目背景 培训学校教务管理系统是培训机构数字化管理的必备系统,该系统功能大大提升机构办学的管理效率、提升机构在家长心中的专业度,市面上的培训机构管理系统收费越来越贵,为了给协会内培…

什么情况?DDD 中的每个任务都执行了两次?

最近在使用 COLA 框架自带的异步任务时,发现每次执行异步都执行了两次,如果一些没有做幂等的接口,这样是会有问题的,比如入库操作之类的,就会造成数据重复入库,造成严重 bug。 带着疑惑,开始了…

目标检测-One Stage-YOLOx

文章目录 前言一、YOLOx的网络结构和流程1.YOLOx的不同版本2.Yolox-Darknet53YOLOv3 baselineYolox-Darknet53 3.Yolox-s/Yolox-m/Yolox-l/Yolox-x4.Yolox-Nano/Yolox-Tiny 二、YOLOx的创新点总结 前言 根据前文CenterNet、YOLOv4等可以看出学界和工业界都在积极探索使用各种t…

HackTheBox - Medium - Linux - Shared

Shared Shared 是一台中等难度的 Linux 机器,它具有通向立足点的 Cookie SQL 注入,然后通过对 Golang 二进制文件进行逆向工程并利用两个 CVE 来获得 root shell 来提升权限。 外部信息收集 端口扫描 循例nmap Web枚举 查看证书 看到这个扫了一下vhos…

骑砍战团MOD开发(36)-千人千面

骑砍1战团mod开发-千人千面_哔哩哔哩_bilibili骑砍1战团mod开发-千人千面, 视频播放量 5、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 1、转发人数 0, 视频作者 霸王奉先, 作者简介 csdn:blog.csdn.net/qq_35829452project:gitcode.net/users/qq_35829452,相关视频…

【解决方案】 无法将“pip“项识别为 cmdlet、函数、脚本文件

在当今的软件开发和运维领域,Python已经成为了一个不可或缺的工具。而pip,作为Python的包管理工具,更是Python生态系统中不可或缺的一部分。然而,有时候我们可能会遇到一个令人困扰的问题:无法将“pip”项识别为cmdlet…

【思扬赠书 | 第2期】语义解析为何作为连接自然语言与机器智能的桥梁?

⛳️ 写在前面参与规则!!! ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论三次) ⛳️本次送书1~4本【取决于阅读量,阅读量越多,送的越多】 文章目录 01 …

汽车中的ECU、VCU、MCU、HCU

一、ECU是汽车电脑,刷汽车电脑可以提高动力,也可以减低动力,看需求。 简单原理如下。 1.汽车发动机运转由汽车电脑(即ECU)控制。 2.ECU控制发动机的进气量,喷油量,点火时间等,从而…

用PDETool计算磁场

学习FEM和磁场,Matlab中的PDETool可以直观的展示数学的结果。 在PDETool中计算磁场的步骤如下: 1.启动matalb,输入命令pdetool 2.画三个矩形 3.在工具栏的下拉列表中选Magnetostatics 4.设置区域电密 在PDE菜单中,选择PDEmode…

AI大模型引领未来智慧科研暨ChatGPT在地学、GIS、气象、农业、生态、环境应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

8年测试总结,正确的自动化测试实施-单元/接口/Web自动化...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 今天给大家分享自…

苹果电脑Markdown写作工具:ulysses mac软件介绍

ulysses for mac是一款Markdown写作工具,支持Markdown拼写检查、语音识别、iCloud同步、版本管理等功能,并且可以导出为 PDF、word、RTF、TXT、Markdown、HTML 和 ePub等文件格式。 ulysses for mac软件介绍 适用于Mac,iPad和iPhone的终极写…

【码银送书第十一期】《自然语言生成SQL与知识图谱问答实战》

语义解析技术可以提高人机交互的效率和准确性,在自然语言处理、数据分析、智能客服、智能家居等领域都有广泛的应用前景。特别是在大数据时代,语义解析能够帮助企业更快速地从大量的数据中获取有用的信息,从而提高决策效率。 01 语义解析的应…

数据库:如何取消mysql的密码

因为调试MySQL数据接口,总是需要输入密码很烦,所以决定取消mysql的root密码, 网上推荐的有两种方法: 1、mysql命令 SET PASSWORD FOR rootlocalhostPASSWORD(); 2、运行 mysqladmin 命令 mysqladmin -u root -p password …

中国IT产经新闻:新能源汽车发展前景与燃油车的利弊之争

随着科技的进步和环保意识的提高,新能源汽车在全球范围内逐渐受到重视。然而,在新能源汽车迅速发展的同时,燃油车仍然占据着主导地位。本文将从新能源与燃油车的利弊、新能源汽车的发展前景两个方面进行分析,以期为读者提供全面的…