【问题标题】:pydicom: dcm_read specific_taglist argument creates attribute errorpydicom:dcm_read specific_taglist 参数创建属性错误
【发布时间】:2019-10-18 16:51:42
【问题描述】:

我有一个包含四个主题及其 DICOM 图像的树。下面是一个主题的目录结构示例:

'C:\\DICOM_EXPORT\\four_de-id\\four_de-id\\100013\\100013\\*.dcm*'

我正在创建一个循环,以递归方式遍历

C:\\DICOM_EXPORT\\four_de-id\\four_de-id\\

在四个主题的每个文件夹中并递归选择一个 .dcm 文件,然后在该图像上应用 pydicom.dcmread() 并填充一个初始化字典 dcm_read,主题 ID subject[38:44] 作为键和特定 DCM 的内容标记为每个键的各自值。标签位于我创建的名为TAGS 的列表中(见下文)。

>>> print(TAGS)
['(0008,0008)', '(0008,0020)', '(0008,0060)', '(0008,0070)', '(0008,0080)', '(0008,0081)', '(0008,0090)', '(0008,009C)', '(0008,1010)', '(0008,1030)', '(0008,103E)', '(0008,1040)', '(0008,1090)', '(0010,1010)', '(0018,0050)', '(0018,0080)', '(0018,0081)', '(0018,0082)', '(0018,0087)', '(0018,0088)', '(0018,0089)', '(0018,0093)', '(0018,0094)', '(0018,1000)', '(0018,1020)', '(0018,1030)', '(0018,1250)', '(0018,1251)', '(0018,9041)', '(0018,9050)', '(0020,0011)', '(0020,0035)', '(0020,0037)', '(0028,0010)', '(0028,0011)', '(0028,0012)', '(0028,0030)']


dcm_read = {}

for i in subjects:
    os.chdir(i)
    dcm_image=glob.glob('*.dcm')
    for subject in subjects:
        dcm_read.update({subject[38:44]:pydicom.dcmread(fp=dcm_image, specific_tags=TAGS)})

来自pydicom.dcmread()specific_tags 参数似乎是出现错误(见下文)的地方。

Traceback (most recent call last):
  File "<input>", line 5, in <module>
  File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 850, in dcmread
    force=force, specific_tags=specific_tags)
  File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 651, in read_partial
    preamble = read_preamble(fileobj, force)
  File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 589, in read_preamble
    preamble = fp.read(128)
AttributeError: 'list' object has no attribute 'read'

但是,pydicomdocumentation 声明 specific_taglist 的参数可以是元素列表。有没有人遇到过这个问题?还是我必须以不同的方式设置我的TAGS 列表?

【问题讨论】:

    标签: python list attributes pydicom


    【解决方案1】:

    glob.glob('*.dcm') 返回一个列表,但 pydicom.dcmread 需要 fp 参数的路径。

    如果您希望目录中只有一个 .dcm 文件,那么您可以通过索引 glob.glob 返回的 .dcm 文件列表来解决您的问题:

    dcm_read.update({subject[38:44]:pydicom.dcmread(fp=dcm_image[0], specific_tags=TAGS)})
    

    【讨论】:

    • +it's-yer-boy-chet 请参阅下面我的帖子以获取更新。无法在评论中发帖。
    • 是的,这是一个不同的错误,现在你的问题是标签列表TAGS。从文档中(这似乎是针对 pydicom 的不同版本),标签列表应该是一个整数列表。你有一个字符串列表,其中没有一个可以转换为整数,所以这可能是问题所在。
    • 我明白了,我必须创建一个关键字列表而不是标签。
    【解决方案2】:
    for i in subjects:
        os.chdir(i)
        dcm_image=glob.glob('*.dcm')
        for subject in subjects:
              path=str(subject+"\\"+dcm_image[0])
              dcm_read.update({subject[38:44]:pydicom.dcmread(fp=path, specific_tags=TAGS)})
    

    我接受了它的建议,添加了path 变量,然后将其设置为fp 参数。但现在出现类型错误:

    Traceback (most recent call last):
      File "<input>", line 6, in <module>
      File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 850, in dcmread
        force=force, specific_tags=specific_tags)
      File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 728, in read_partial
        specific_tags=specific_tags)
      File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 363, in read_dataset
        raw_data_element = next(de_gen)
      File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\filereader.py", line 117, in data_element_generator
        tag = Tag(tag_for_keyword(tag))
      File "C:\Users\Isabel Wingert\Anaconda3\envs\DCM_EXPORT\lib\site-packages\pydicom\tag.py", line 114, in Tag
        if long_value > 0xFFFFFFFF:
    TypeError: '>' not supported between instances of 'NoneType' and 'int'
    

    【讨论】:

      猜你喜欢
      • 2011-07-25
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 2011-12-05
      • 2014-04-26
      • 1970-01-01
      • 2023-04-06
      • 2017-05-25
      相关资源
      最近更新 更多