[英]Python array 3D to video
是否有一種簡單的方法可以將500x500x60陣列轉換為保存為avi的60幀視頻?
我設法獲得了一個plt.imshow窗口來對動畫環境進行動畫處理。 但是如何正確保存呢?
def animate_cube(cube_array, cut=True, mn=0, sd=0, interval=75, cmap='hot'):
'''
animates a python cube for quick visualisation. CANNOT BE SAVED.
INPUT:
cube_array : name of 3D numpy array that needs to be animated.
cut : trims pixels off of the images edge to remove edge detector effects.
Default = True as 0 returns empty array.
mn : mean of the cube | Used for contrast
sd : std of the cube | Used for contrast
interval : #of ms between each frame.
cmap : colormap. Default='hot'
OUTPUT:
animated window going through the cube.
'''
fig = plt.figure()
std = np.std(cube_array[0])
mean = np.mean(cube_array[0])
if mn==sd and mn==0:
img = plt.imshow(cube_array[0][cut:-cut, cut:-cut], animated=True, vmax=mean+3*std, vmin=mean-3*std, cmap=cmap)
else:
img = plt.imshow(cube_array[0][cut:-cut, cut:-cut], animated=True, vmax=mn+3*sd, vmin=mn-3*sd, cmap=cmap)
def updatefig(i):
img.set_array(cube_array[i][cut:-cut, cut:-cut])
return img,
ani = animation.FuncAnimation(fig, updatefig, frames=cube_array.shape[0], interval=interval, blit=True)
plt.colorbar()
plt.show()
您是否嘗試插入以下內容:
ani.save('cube_movie.avi', writer="ffmpeg", fps=15)
而不是plt.show
嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.