从PosixPath,Python中读取DICOM对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从PosixPath,Python中读取DICOM对象相关的知识,希望对你有一定的参考价值。

我有20,000个PosixPath,每个指向一个不同的.dcm对象。我需要逐个读取.dcm对象。到目前为止,这是我的代码:

from pathlib import Path
import glob
import dicom
data = Path('/data')
path_to_dcm_objects = list(data.glob('**/*.dcm'))
for i in len(path_to_dcm_objects):
    record = dicom.read_file(path_to_dcm_objects[i])

当我想使用其PosixPath读取.dcm文件时出现错误:

AttributeError: 'PosixPath' object has no attribute 'read'

任何帮助,将不胜感激。

答案

dicom.read_file()需要一个打开的文件对象或一个字符串作为路径而不是Path实例。如果它不是字符串,则认为它是一个打开的文件并尝试从中读取。

使用Pathstr(path_object)实例转换为字符串:

for i in len(path_to_dcm_objects):
    record = dicom.read_file(str(path_to_dcm_objects[i]))

Path对象转换为字符串的帮助:

返回路径的字符串表示形式,适合传递给系统调用。

您还可以使用:

 path_object.as_posix()

这给你一个Posix路径:

使用forward(/)斜杠返回路径的字符串表示形式。

顺便说一下,迭代所有路径的pythonic方式看起来更像是这样:

for path_obj in data.glob('**/*.dcm'):
    record = dicom.read_file(str(path_obj))

以上是关于从PosixPath,Python中读取DICOM对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在matlab中读取一组三维dicom图片

Python对DICOM图像进行阈值分割

TypeError:“PosixPath”类型的参数不可迭代

图像识别 | 使用Python对医学Dicom文件的预处理(含代码)

在 C++ 中读取 DICOM 并转换为 OpenCV

Django TypeError:“PosixPath”类型的参数不可迭代