python - 多个堆叠的numpy数组的动画
问题描述
这是问题所在。
我有两个 3D numpy 数组,一个是使用库从 DICOM 图像中提取的pydicom
(我称之为“幻像”),另一个是我构建的二进制文件(我称之为“网格”)。顾名思义,这些数组的第三维允许穿越幻影的不同切片。这些切片垂直于轴向方向。您可以在下面看到两张图片(左侧为幻影,右侧为网格):
这个想法是创建一个动画 gif,其中两个数组相互堆叠。例如,我创建了一个幻影的 gif,您可以在此地址看到(该文件太重,无法在本文中显示)。我想制作相同的 gif,但要在其上堆叠网格。换句话说,我想要与此 gif 相同的结果,但网格堆叠在其上,如下所示:
到目前为止,我使用 matplotlib 创建了我的 gif FuncAnimation
。例如,我之前展示的 gif 是使用以下代码生成的。
import matplotlib.pyplot as plt
import pydicom as pdcm
from matplotlib import animation
path = "../../im_DICOM/CBCT/"
ds = pdcm.dcmread(path + "IMG0000000139.dcm")
sl = ds.RescaleSlope
bi = ds.RescaleIntercept
arr = sl*ds.pixel_array + bi
fig = plt.figure(figsize=(10, 10))
ax = plt.axes()
im = plt.imshow(arr, animated=True, cmap='bone')
plt.colorbar(label="HU", shrink=0.75)
plt.tight_layout()
def init():
ds = pdcm.dcmread(path + "IMG0000000400.dcm")
im.set_data(sl*ds.pixel_array + bi)
return im,
def animate(i):
if i < 10:
name = path + "IMG000000000" + str(i) + ".dcm"
elif i < 100:
name = path + "IMG00000000" + str(i) + ".dcm"
else:
name = path + "IMG0000000" + str(i) + ".dcm"
a = pdcm.dcmread(name).pixel_array
im.set_array(sl*a + bi)
return im,
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=447, interval=.01, blit=True)
anim.save("test.gif")
问题是我不知道如何使用该set_array()
方法设置多个数组。有人会有想法吗?
先感谢您 !
PS:我知道我可以使用os.listdir
. 旧代码哈哈
解决方案
推荐阅读
- python - 双重直接整合
- javascript - 当试图阻止玩家在击中某些最近的物体(块)后停止移动时,物体不起作用
- javascript - 通过 Ajax 加载页面时处理脚本加载
- python - 函数 foldByKey :使用元组内的整数进行计算,给出“int object not subscriptable”
- asp.net-core - 无法向特定用户发送消息。connection.on 未到达
- php - 在 Laravel 中按 Eloquent 订购
- java - 一个可以多少次
方法在Java中执行? - c# - 数组中值的随机索引
- r - 反序列化错误(con):未知的输入格式
- java - 为什么 Eclipse 看不到 groovy.sql.Sql?