我正在使用建议的here解决方案,使用matplotlib
在3D中绘制图像。但是,即使对于非常合理的图像大小(128x128
),刷新率也非常慢。在我的电脑上,以下内容不能高于2帧/秒。
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
import numpy as np
X, Y = np.meshgrid(np.arange(128), np.arange(128))
Z = np.zeros_like(X)
im = np.sin(X/10 + Y/100)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=plt.cm.BrBG(im), shade=False)
plt.show()
有没有办法加速上述情节?我理解mplot3d does not support hardware acceleration,但我觉得上面的简单情节应该更快,即使在CPU上也是如此。
答案 0 :(得分:2)
您可以尝试mayaVi库以获得更好的交互式数据可视化。
#import matplotlib.pyplot as plt
#from mpl_toolkits import mplot3d
import numpy as np
from mayavi import mlab
X, Y = np.meshgrid(np.arange(128), np.arange(128))
Z = np.zeros_like(X)
im = np.sin(X/10 + Y/100)
#fig = plt.figure()
#x = fig.add_subplot(111, projection='3d')
src = mlab.pipeline.array2d_source(im)
warp = mlab.pipeline.warp_scalar(src)
normals = mlab.pipeline.poly_data_normals(warp)
surf = mlab.pipeline.surface(normals)
mlab.show()
#ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=plt.cm.BrBG(im), shade=False)
#plt.show()