python matplotlib安装失败,导入matplotlib报错

  python matplotlib安装失败,导入matplotlib报错

  1.内容,2。数据分析,3。实施过程,4。整体代码实现,5。描述。

  1.介绍

  骨架数据集因其鲁棒性被广泛应用于运动识别和预测领域,其中NTU RGB-D数据集是最常用的骨架运动数据集。无论是描述自己的数据,还是分析特征的变化过程,可视化都是必不可少的一步。基于NTU RGB-D数据集,利用Python的Matplotlib库实现骨骼数据的可视化。

  2.数据分析NTU RGB-D的数据集非常标准,文件扩展名为”。骷髅”。直接在记事本中打开的结果如下:

  从上面的顺序,帧数,骨架数(2以下,即数据集中的动作由一两个人完成),骨架的其他信息)。原文为 bodyid , clips , handlefts , handlefts 和 handlefts state ,即 handlefts state , isResticted , leanX , leanY 和 tracking state ),一个骨架中有几个 orientation x , orientation y , orientation z 和 tracking state )。

  只需要x,y和z。2D图像只需要X和y。所以我们的程序大致如下。

  导入数据文件,为数据环的每个帧、骨架和关节节点指定数据,并绘制数组。在散点图中绘制骨架节点,在线图中绘制骨架链接,创建逐帧显示的0填充列表。

  importnumpyasnpimportmatplotlib . pyplotaspltfile _ name=r c:\ users \ Lenovo \ desktop \ visual/s 001 c 001 p 001

  withopen(file_name, r )asfr:frame_num=int)fr . readline)point=NP . zeros,frame _ num,2)for frame in range(frame _ num):person _ num=int(fr . readline))for person in range)person _ num)3360关节60 v=fr.readline)。split ) ) Ifjointmanage joint,person]=float(v(0))关节的坐标点(1,frame,joint,point)

  xmax=NP.max (point [ 0,] ) 0.5xmin=NP.min ) point [ 0,] ) 0.5ymax=:]

  根据NTU骨架结构确定哪个节点连接到骨架#注意,数字从0开始,1 arms=NP.array ([ 24,12,11,10,9,21,5,6,7,8,20] )1#

  显示nmrow,直到第n=0 #帧到第m=2 #帧结束。m为了便于查看,您可以选择小于最大帧数的阈值。当m=1时,即使在脚本中遇到plt.show(),也会显示一帧plt.figure () plt.ion)来执行代码color_point=#03ff。

  #关节点颜色,可以输入十六进制调色板color _ bone= red # bone color for I in range(n,m): plt.cla () # # clearaxis清除当前绘图中的当前活动轴。其他轴不受影响。Plt。散点图(point [0,I,),point [1,I,],c=color _ point,s=40.0) #通过散点图画关节点#通过直线图画两点之间的连线,即bone PLT。Plot (point [0,I,arm arms,0],c=color_bone,lw=2.0) plt.plot(point[0,I,rightHand,0],point[1,I,rightHand,0],c=color_bone,lw=2.0) plt.plot(point[0,I,leftHand,0],point[1,I,leftHand,0],c=color_bone,lw=2.0) plt.plot(point[0,I,I,legs,0],point[1,I c=color_bone,lw=2.0) plt.plot(point[0,I,legs,1],point[1,I,legs,1],c=color_bone,lw=2.0) plt.plot(point[0,I,body,1],point[1,I,body,1],c=color_bone,Lw=2.0) plt.text (xmax-0.5,ymax-0.1, frame: {}/{} 。 format (I,row-1)) #这是什么帧plt.xlim(xmin,xmax) # axis plt.ylim(ymin,YMAX) PLT。暂停(0.001) PLT。IOFF () PLT。SHOW()结果显示,显示帧数和输出颜色线的粗细可以根据上面的绘图参数进行调整。这里只输出两帧:

  4.整体代码实现:导入numpy作为NP导入matplotlib。py plot as PLT file _ name=r c:\ Users \ Lenovo \ Desktop \ visual/s 001 c 001 p 001 r 001 a 009。骷髅 max _ V=25 #节点数max_M=2 #骨架数量with open(file_name, r )as fr:frame_num=int(fr .readline())point=NP。范围(frame _ num)中帧的零((3,frame _ num,25,2)):person _ num=int(fr .readline())for person in range(person _ num):fr。readline()joint _ num=int(fr。readline())用于范围内的关节(joint _ num):v=fr。readline().split( )if joint max _ V and person max _ M:point[0,frame,joint,person]=float(v[0])#一个关节的一个坐标point[1,框架,关节,人]=float(v[1]) point[2,框架,关节,人]=float(v[2])print(读取数据完成!)打印(点.形状)#通过最大最小的坐标值来选取合适的坐标轴xmax=np.max(point[0,)。5xmin=np.min(point[0,- 0.5ymax=np.max(point[1,)0.3ymin=np.min(point[1,)- 0.3zmax=np.max(point[2,))zmin=np.min(point[2,))row=point.shape[1] #有多少帧# 根据NTU骨架结构确定哪几个节点相连为骨骼# 注意序号从0开始,需要减1arms=np.array([24,12,11,10,9,21,5,6,7,8,20])-1 #胳膊rightHand=np.array([12,25])-1 #右手leftHand=np.array([8,23])-1 #左手legs=np.array([20,19,18,17,1,13,14,15,16]) - 1 #腿body=np.array([4,3,21,2,1]) -1 #身体n=0 #从第n帧开始展示m=2 #到第m帧结束,nmrow,这个m可以选取一个小于最大帧数的阈值,便于查看,若m=1则展示一帧plt.figure()plt.ion() #使用植物离子()这个函数,使绘制精美的图表的显示模式转换为交互(互动)模式。即使在脚本中遇到plt.show(),代码还是会继续执行color_point=#03ff #关节点颜色,可输入16进制调色板color_bone=red #骨骼颜色对于范围(名词,名词)中的I:PLT。cla()# #清除轴即清除当前图形中的当前活动轴。其他轴不受影响。plt.scatter(point[0,I,point[1,I,],c=color_point,s=40.0) #通过散点图绘制关节点#通过直线图绘制两点间的连接线,即骨骼plt.plot(point[0,I,arms,0],point[1,I,arms,0],c=color_bone,lw=2.0) plt.plot(point[0,I,rightHand,0],point[1,I,rightHand,0],c=color_bone,lw=2.0)第二个骨架,如果有的话plt.plot(point[0,I,arms,1],point[1,I,arms,1],c=color_bone,lw=2.0) plt.plot(point[0,I,rightHand,1],point[1,I,rightHand,1],c=color_bone,lw=2.0) format(i,row-1)。这是第几帧# plt.text(xmax-0.8,ymax-0.4, label: str(label[I]))PLT。xlim(xmin,xmax) #坐标轴ylim(ymin,ymax)。暂停(0.001)PLT。ioff()PLT。显示()5 .说明部分代码参考了博客园博主https://www.cnblogs.com/picassooo/p/14044566.html,稍加修改并添加注释

  本代码的核心思想在于:使用散点图绘制关节点,使用直线图绘制骨骼,如果有不同的图像需求请参考Matplotlib库自行调节参数。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: