По сути, вы должны прочитать извлеченные файлы DICOM:
zip_path = patient.PATIENT_DICOM
with zipfile.ZipFile(zip_path, 'r') as zip:
path = tempfile.mkdtemp()
zip.extractall(path)
slices = []
for root, _, filenames in os.walk(path):
for filename in filenames:
filepath = os.path.join(root, filename)
slices.append(pydicom.dcmread(filepath))
shutil.rmtree(path)
Обратите внимание, что при этом сначала все файлы извлекаются в временный каталог, что, вероятно, быстрее, чем доступ к ним один за другим. Это предполагает, что все файлы в zip принадлежат одному и тому же объему или серии. Если вы хотите продолжить работу с кусочками, сначала нужно правильно их отсортировать, например, по InstanceNumber
.