【发布时间】:2022-01-27 04:36:16
【问题描述】:
我尝试将一系列 DICOM 文件加载到 3d 数组中。我这样做很糟糕,因为我遇到了这样的错误(不流利地使用 Python): ValueError: 无法将输入数组从形状 (512,512) 广播到形状 (512,117)。
我不明白为什么,因为我将形状指定为 (512,512,117)
import os
from pathlib import Path
import numpy
from pydicom import dcmread
#from pydicom.data import get_testdata_file
# fetch the path to the test data
path = 'C:/Users/tykab/Downloads/DICOM/MH DICOM + images/MH example DICOM/IMediaExport/DICOM/PAT_0000/STD_0000/SER_0003/OBJ_0001/IM_0001.dcm'
ds = dcmread(path)
root_dir = Path(ds.filename).resolve().parent
print(f'Root directory: {root_dir}\n')
files = []
for file in os.listdir(root_dir):
files.append(file)
print(files)
data = []
s = (512,512,117)
pixel_data = numpy.zeros(s)
print (pixel_data)
for i in files:
path_file = f'C:/Users/tykab/Downloads/DICOM/MH DICOM + images/MH example DICOM/IMediaExport/DICOM/PAT_0000/STD_0000/SER_0003/OBJ_0001/{files[0]}'
data.append(dcmread(path_file))
for i in range(117):
pixel_data[:][:][i] = data[i].pixel_array[:][:]
print(pixel_data)
【问题讨论】:
-
[:]没有任何用处。使用pixel_data[:,:,i] -
您可能想要使用 117,512,512 数组并将 512x12 数组分配给第一个维度。比如:x = np.ndarray([117,512,512]) 然后 x[i] = pixel_array
标签: python numpy image-processing pydicom medical-imaging