opencv画3d骨架图

效果:在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

# h36m骨架连接顺序,每个骨架三个维度,分别为:起始关节,终止关节,左右关节标识(1 left 0 right),用来区别颜色
human36m_connectivity_dict = [[0, 1, 0], [1, 2, 0], [2, 6, 0], [5, 4, 1], [4, 3, 1], [3, 6, 1], [6, 7, 0],
                              [7, 8, 0], [8, 16, 0], [9, 16, 0],
                              [8, 12, 0], [11, 12, 0], [10, 11, 0], [8, 13, 1], [13, 14, 1], [14, 15, 1]]


def draw3Dpose(pose_3d, ax, lcolor="#3498db", rcolor="#e74c3c", add_labels=False):  # blue, orange
    for k in range(0,10):
        plt.cla()#清除原来的效果,必须要清除,不然会不断叠加
        for i in human36m_connectivity_dict:#扫描所有的关节相连关系
            x=np.array([pose_3d[i[0], 0], pose_3d[i[1], 0]])#两个关节的x坐标
            y=np.array([pose_3d[i[0], 1], pose_3d[i[1], 1]])#两个关节的y坐标
            z=np.array([pose_3d[i[0], 2], pose_3d[i[1], 2]])#两个关节的z坐标
            ax.plot(x, y, z, lw=2, c=lcolor if i[2] else rcolor)#在三维图中将两个关节连起来

        RADIUS = 750  # space around the subject确定下我们的视角图
        xroot, yroot, zroot = pose_3d[5, 0], pose_3d[5, 1], pose_3d[5, 2]
        ax.set_xlim3d([-RADIUS + xroot, RADIUS + xroot])
        ax.set_zlim3d([0, 2 * RADIUS + zroot])
        ax.set_ylim3d([-RADIUS + yroot, RADIUS + yroot])

        ax.set_xlabel("x")
        ax.set_ylabel("y")
        ax.set_zlabel("z")
        plt.pause(0.5)#每个画面之间留下0.5秒的间隔


if __name__ == '__main__':
    #这里是各个关节的三维坐标
    specific_3d_skeleton = np.array([[-60.70762, 403.8008, 109.0549],
                                     [-21.792213, 350.7608, 542.72705],
                                     [19.21995, 377.59323, 992.2105],
                                     [306.85883, 326.98297, 967.81555],
                                     [280.36816, 338.44727, 516.5916],
                                     [255.34781, 397.92474, 82.73034],
                                     [163.04, 352.288, 980.013],
                                     [178.85904, 334.66092, 1240.1534],
                                     [187.37048, 291.85312, 1487.3542],
                                     [150.81487, 211.43636, 1683.0452],
                                     [-384.66232, 412.21793, 1211.5632],
                                     [-168.92372, 486.90985, 1298.1694],
                                     [34.860744, 360.55948, 1461.1226],
                                     [353.3462, 285.74405, 1454.4487],
                                     [610.2841, 259.90445, 1322.6831],
                                     [778.4938, 93.56336, 1262.1969],
                                     [164.2095, 206.31268, 1568.9426]])

    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    draw3Dpose(specific_3d_skeleton, ax)


热门文章

暂无图片
编程学习 ·

共识算法 POW/POS

POW/POS在区块链系统中,共识算法是区块链保持数据安全、不可篡改、透明性等特色的关键技术。共识机制是区块链的灵魂,是区块链建立信任的基础。一个区块链项目选择使用何种共识机制,决定了这个项目是否能建立起完善的激励机制,从而起到鼓励更多节点参与到项目中,进而增加系…
暂无图片
编程学习 ·

删除和关闭docker容器

查看所有正在运行容器 docker ps 查看所有容器 docker ps -a 查看所有容器ID docker ps -a -q 停止某个具体容器 docker stop 容器ID stop停止所有容器 docker stop $(docker ps -a -q) remove删除容器 docker rm 容器ID remove删除所有容器 docker rm $(docker ps -a -q) ps查…
暂无图片
编程学习 ·

源代码编译安装

源代码编译 使用源代码安装软件的优点获得最新的软件版本,计时修复bug 根据用户需要,灵活定制软件功能应用场景举例安装较新版本的应用时 当前安装的程序无法满足需要时 需要为应用程序添加新的功能时Tarball封包.tar.gz和.tar.bz2格式居多 软件素材参考:http://sourceforg…
暂无图片
编程学习 ·

Django 接收并解析POST请求参数

使用Django框架搭建一个简单的web服务,java程序去调用Django提供的接口: 1. Django接收GET请求并解析参数 # 直接使用request.GET.get就可以获取参数 request.GET.get(id,0)2. Django接收POST请求并解析参数 使用postman模拟POST请求,需要关闭csrftoken的验证:将settings.p…
暂无图片
编程学习 ·

防止IE6 CSS背景闪烁

Internet Explorer造成的困扰问题之一是锚标记背景图像的闪烁。 但是,您知道吗,有一种使用少量JavaScript来防止该问题的快捷简便的方法吗? 只需将以下JavaScript代码放在您网站的标题部分,刷新页面,然后就另一个IE6问题出价。 .x-secondary-small {display: none; }@medi…
暂无图片
编程学习 ·

CentOS系统安装好之后输入ifconfig指令无法查看ip解决办法

CentOS系统安装好之后输入ifconfig指令无法查看ip解决办法 第一次使用虚拟机安装CentOS系统,安装完之后想要通过Xshell连接Linux系统,在输入ifconfig指令后,无法查看到ip地址,也就无法通过ip地址连接Linux系统 本人经过多次百度,找了很多的解决办法都无法解决问题,但也发现了无…
暂无图片
编程学习 ·

python3 yield关键字简单使用

python3 yield关键字yield简单介绍如何改变文本的样式简单实例为什么需要生成器?实例优势 yield简单介绍 yield <==> 生成器 包含yield语句的函数是一个生成器 生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值 生成器是一个不断产生值的函数 如何…
暂无图片
编程学习 ·

matlab的subplot中间添加ylable

根据图形的坐标轴的大小确定中间位置或者是想要的位置。如下图所示,横坐标师10^6为单位的坐标轴,左边一点的位置大概为-300000,纵坐标最下面一幅图的总高度为1,倒数第二幅图像总高度为0.4,加上下面的空白处,中间位置大概为3.5左右,所以代码为ylabel(Amplitude,position,…
暂无图片
编程学习 ·

前端学习-javascript-(1)预览

组成 DOM—Document Object Model 文档对象模型—操作返回到文档(界面) doucument对象 ———————————————— BOM—Browser Object Model 浏览器对象模型—操作浏览器本身 window对象 ———————————————— ECMAScript 解释器 ———————————…
暂无图片
编程学习 ·

前端未来技术走向(TS, SSR, serverless, flutter,多端统一开发)

TS TS为什么会出现? 1.js是一门弱类型而且还是动态类型的语言,语言本身的类型系统是非常薄弱的,当js去开发大型的前端项目,开发成本和维护成本都会非常的高2.而ts是一门基于js基础之上的编程语言,它在javascript原有的基础之上多了一些扩展特性,主要就是一套更强大的类型…
暂无图片
编程学习 ·

数据结构-字典

字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对 哈希表 哈希表由dict.h/dictht结构定义 typedef struct dictht {// 哈希表数组dictEntry **table;// 哈希表大小unsigned long size;// 哈希表大小掩码,用于计算…
暂无图片
编程学习 ·

冒泡排序

冒泡排序 public class Test{public static void main(String[] args){int[] arr = {20,5,15,10,0,25};int temp = 0;for (int j=0;j<arr.length-1;j++ ){for (int i=0;i < arr.length-1-i ;i++ ){if (arr [i] > arr [i+1]){temp = arr [i+1];arr [i+1] = arr [i];arr…
暂无图片
编程学习 ·

HTML5 向网页嵌入视频和音频

现在很多网站上都会使用到视频和音频,HTML5 中提供了展示视频和音频的标签。向网页嵌入视频可以使用 <video> 标签,而嵌入音频可以使用 <audio> 标签。这两个标签都是 HTML 5 中新增的标签,两个标签中的属性和方法也很类似,但也有些不同。其中 audio 元素用于…
暂无图片
编程学习 ·

抽象类和接口复习

1.抽象类1.1抽象类定义在面向对象中,所有的对象都是由类进行描绘实现的,但是并不是所有的类都是用来描绘对象的,当一个类中没有包含足够的信息描绘一个具体的对象。我们把这种类定义为一个抽象类。1.2抽象类的特征(1)不能用来实例化对象,通过被继承来使用。(2)一个类只…
暂无图片
编程学习 ·

centos7源码安装mariadb10.4.16(脚本)

#!/bin/bash #auto SourceCode Install mariadb #by author toyix #2020年7月2日 13:14:14 yum install -y wget lrzsz vim echo "安装阿里base及epel源" wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yu…
暂无图片
编程学习 ·

npm 中的package.json

npm 中的package.json 1. npm package又叫node package manager 包管理器 2. package.json 作用是: 项目中都是用了什么包, 相互依赖关系是什么。 node_modules丢失了,怎么恢复,留作备案。 我们建议每个项目总都要有一个package。json文件(报表数文件,就像产品的说明书一…
暂无图片
编程学习 ·

大数据从0到1-流式计算Flink

启动 伴随着离线分析的稳定后,下一步的目标就是进行实时的数据分析。从原理上看,也就是将每天的数据变成实时的处理,技术栈会有所不同,本着用新不用旧的原则,我们将目标定为:flink作为流式计算的基础; 架构及数据流数据来源采集,由于原系统希望主动推送过来,并且希望采…