python读取dicom数据_无法使用Python3和pydicom读取dicom文件

我相信问题的原因是Python(对我来说,它只发生在运行于centos7.6linux上的python3中,打印到MacOS上的终端窗口上)由于语言环境的设置,无法确定如何打印包含非ascii字符的字符串。可以使用locale命令查看结果。我的一开始一切都设为“C”。我将LANG环境变量设置为en_美国UTF-8。在那样的环境下,它对我有效。

在csh中,可以使用setenv LANG en_US.UTF-8

在bash中使用:

^{pr2}$

我的问题是因为Series Description元素中有“µ”。该文件是西门子扫描仪上SPECT重建的衰减图。我使用下面的Python代码来帮助解决问题。在#! /usr/bin/env python3

import pydicom as dicom

from sys import exit, argv

def myprint(ds, indent=0):

"""Go through all items in the dataset and print them with custom format

Modelled after Dataset._pretty_str()

"""

dont_print = ['Pixel Data', 'File Meta Information Version']

indent_string = " " * indent

next_indent_string = " " * (indent + 1)

for data_element in ds:

if data_element.VR == "SQ": # a sequence

print(indent_string, data_element.name)

for sequence_item in data_element.value:

myprint(sequence_item, indent + 1)

print(next_indent_string + " -")

else:

if data_element.name in dont_print:

print("""""")

else:

repr_value = repr(data_element.value)

if len(repr_value) > 50:

repr_value = repr_value[:50] + "..."

try:

print("{0:s} {1:s} = {2:s}".format(indent_string,

data_element.name,

repr_value))

except:

print(data_element.name,'****Error printing value')

for f in argv[1:]:

ds = dicom.dcmread(f)

myprint(ds, indent=1)

这是基于来自]1的myprint函数

代码试图打印出所有的数据项。它捕捉异常并在出现错误时打印“****错误打印值”。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值