AttributeError:“FileDataset”对象没有属性“ImagePosition”

问题描述 投票:0回答:2
for person in range(0, len(dirs1)):
    for root, dirs, files in os.walk(os.path.join(path, dirs1[person])):
        dcmfiles = [_ for _ in files if _.endswith('.dcm')]
        for dcmfile in dcmfiles:
            dcm_image = pydicom.read_file(os.path.join(root, dcmfile))
            img = dcm_image.pixel_array
            img2 = dcm_image.ImagePosition   # Error in this line

对于:

(0020, 0032) Image Position (Patient) DS: ['-166.000000', '-171.699997', '-207.500000']

我的问题是我想要“图像位置(患者)”结构作为数组或其一个元素(如“-207.500000”)。 当我运行代码时,出现此错误:

img2 = dcm_image.ImagePosition
行给出
AttributeError: 'FileDataset' object has no attribute 'ImagePosition'

python dicom pydicom
2个回答
1
投票

正如 Karl 在评论中建议的那样,图像位置(患者)属性可以通过

访问
dmc_image.ImagePositionPatient

如果此属性仍然出现错误,则表示错误所指示的内容:您的对象没有此属性。 Dicom 指出 (0020,0032) 标签的关键字是 ImagePositionPatient,而 ImagePosition 实际上是一个已退役的标签 (0020, 0030)。请参阅DICOM 数据字典,第 59 页。因此,您的对象没有它这一事实可能是一件好事。


0
投票

已解决使用内置函数

# Display each DICOM slice
for i, dcm in enumerate(dicom_files):

img = dcm.pixel_array
img2 = dcm.ImagePositionPatient

# height, width, depth = dcm.shape
# print(f"dcm {i + 1} - Size: Height: {height}, Width: {width}, 
Depth: {depth}")

plt.figure(figsize=(6, 6))
plt.imshow(dcm.pixel_array, cmap='gray')
plt.title(f"Slice {i + 1}")
plt.axis('off')
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.