【发布时间】:2014-03-14 17:50:29
【问题描述】:
我有一组来自 kinect 的 [x,y,z,r,g,b] 形式的数据点,我想绘制 [x,y,z] 将点设置为 [r,g ,b]。到目前为止,我唯一能够完成的就是更改每行的颜色,因为据我所知,绘图需要分布。
这是我目前的代码:
i = 0
for frame in data[0]:
fig = figure()
ax2 = fig.gca(projection='3d')
for col in frame:
color_value=(median(col[:,3])/255, median(col[:,4])/255, median(col[:,5])/255)
ax2.scatter(col[:,0],col[:,2]*(-1),col[:,1],color=color_value, alpha=0.25 )
print(str(i))
i += 1
savefig(working_dir + 'images/scatter_point' + str(i) + '.png', bbox_inches='tight')
编辑: 感谢 HYRY 提出使用 scatter 的建议。它可以工作,但是需要比我更多的 RAM 才能在 640x480 图像中实际工作。供任何寻找此类事物的人将来参考,操作路线是:
ax2.scatter(frame[i][j][0], frame[i][j][2]*(-1), frame[i][j][1], color = (frame[i][j][3]/255, frame[i][j][4]/255, frame[i][j][5]/255), marker = 's', s=0.25)
marker= 's' 表示使用正方形而不是点,s=0.25 将点设置得更小。
如果您想要制作较低分辨率的图像,请将 for 循环限制为仅每隔一个或每隔四个点绘制一次。
【问题讨论】:
-
你应该看看this libfreenect example,它使用OpenGL来绘制,会快很多。
-
@IvoFlipse 我试图让它工作但无济于事。我认为链条中的链接太多而无法打破。我真的需要一个 kinect 来让演示工作吗?我只有数据集。欢迎任何其他关于让 OpenGL 为这个应用程序工作的技巧,特别是对于 Python3.x
标签: python-3.x numpy matplotlib scipy