我想創建兩個軸的影片。在下面說明的簡單示例中,我想繪制兩個矩陣imshow作為時間的函式。
來自 python,我將使用matplotlib.animation類似于以下內容創建影片:
using PyCall
@pyimport matplotlib.animation as anim
using PyPlot
import IJulia
A = randn(20,20,20,2)
fig, axes = PyPlot.subplots(nrows=1, ncols=2, figsize=(7, 2.5))
ax1, ax2 = axes
function make_frame(i)
ax1.clear()
ax2.clear()
ax1.imshow(A[:,:,i 1, 1])
ax2.imshow(A[:,:,i 1, 2])
end
withfig(fig) do
myanim = anim.FuncAnimation(fig, make_frame, frames=size(A,3), interval=20, blit=false)
myanim[:save]("test.mp4", bitrate=-1, extra_args=["-vcodec", "libx264", "-pix_fmt", "yuv420p"])
end
然而,這只會創建一個空白影片。我需要init_func在 FuncAnimation 中使用嗎?我需要啟用 blitting 嗎?或者我可以使用set_data屬性更新藝術家嗎?
uj5u.com熱心網友回復:
不要IJulia用于此例程。如果您打算將例程包含在筆記本中,只需運行代碼,然后查看您創建的檔案,而無需使用withfig. withfig由于某種原因導致您的影片創建中止,可能是因為它期望 IJulia 環境中的某些內容設定不同。
這有效:
using PyCall
@pyimport matplotlib.animation as anim
using PyPlot
A = randn(20,20,20,2)
fig, axes = PyPlot.subplots(nrows=1, ncols=2, figsize=(7, 2.5))
ax1, ax2 = axes
function make_frame(i)
ax1.clear()
ax2.clear()
ax1.imshow(A[:,:,i 1, 1])
ax2.imshow(A[:,:,i 1, 2])
end
myanim = anim.FuncAnimation(fig, make_frame, frames=size(A,3), interval=20, blit=false)
myanim[:save]("test.mp4", bitrate=-1, extra_args=["-vcodec", "libx264", "-pix_fmt", "yuv420p"])
# now you can call your video viewer on "test.mp4"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/521018.html
上一篇:關鍵幀小鬼?
下一篇:CSS按鈕影片未啟動
