Spaces:
Running
Running
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') | |