File size: 1,166 Bytes
95f8bbc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import numpy as np
import matplotlib.pyplot as plt

# 导入数据
import pickle
with open("output_3Dpose_npy/kun_1280x720_30fps_0-14_0-32.npy", 'rb') as file:
    data = np.load(file)
with open("skeleton.npy", 'rb') as file:
    skeleton = pickle.load(file)

# 提取第0帧坐标
xyz_0 = data[0]

# 创建3D坐标系
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
# 设置俯仰角和方位角
ax.view_init(elev=0., azim=70)

# 绘制3D点
radius = 1.7
ax.scatter(xyz_0[:, 0], xyz_0[:, 1], xyz_0[:, 2])
# 添加文本标记
for i in range(xyz_0.shape[0]):
    ax.text(xyz_0[i, 0], xyz_0[i, 1], xyz_0[i, 2], str(i), fontsize=10)

# 绘制两点间的线段
for num1 in range(xyz_0.shape[0]):
    parent = skeleton._parents
    num2 = parent[num1]
    if num2 != -1:
        x1, y1, z1 = xyz_0[num1, :]
        x2, y2, z2 = xyz_0[num2, :]
        ax.plot([x1, x2], [y1, y2], [z1, z2])

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
# ax.set_xlim3d([-radius/2, radius/2])
# ax.set_ylim3d([-radius/2, radius/2])
# ax.set_xticklabels([])
# ax.set_yticklabels([])
# ax.set_zticklabels([])

# 保存图像
plt.savefig('plot.png')