有问题的切片niimg从nibabel.get_data()。
当使用Nipype教程的这个功能时,
def plot_slice(fname, z_idx=5):
# Load the image and collect the data
# and orientation information
img = nib.load(fname)
data = img.get_data()
aff = img.get_affine()
# Find the center of the brain matrix
ctr = np.dot(np.linalg.inv(aff), [0, 0, 0, 1])[:3]
# Plot the data
vmin, vmax = (0, 1) if data.dtype == np.int16 else (30, 150)
plt.imshow(np.rot90(data[:, :, ctr[2] + z_idx]), cmap="gray", vmin=vmin, vmax=vmax)
plt.gca().set_axis_off()要运行
plot_slice("output/run001_bet.nii.gz")结果是这样的;
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-10-5b2c71c131be> in <module>()
----> 1 plot_slice("output/run001_bet.nii.gz")
<ipython-input-8-4c2563317c99> in plot_slice(fname, z_idx)
12 # Plot the data
13 vmin, vmax = (0, 1) if data.dtype == np.int16 else (30, 150)
---> 14 plt.imshow(np.rot90(data[:, :, ctr[2] + z_idx]),
15 cmap="gray", vmin=vmin, vmax=vmax)
16 plt.gca().set_axis_off()
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices发布于 2019-11-06 16:17:58
因为ctr2是由np.dot返回的,所以它实际上是一个浮点数,尽管它看起来像一个int。尝试int(ctr2) + z_idx。
https://stackoverflow.com/questions/48745598
复制相似问题