我正在使用openDicom.net阅读dicom标签,如下所示:
string tag = "";
string description = "";
string val_rep = "";
foreach (DataElement elementy in sq)
{
tag = elementy.Tag.ToString();
description = elementy.VR.Tag.GetDictionaryEntry().Description;
val_rep = elementy.VR.ToString();
}
如何阅读dicom标记值?
答案 0 :(得分:1)
未实现value.ToString()
方法。在Value.cs中实现您自己的方法,您将获得“Value”的值。
例如(仅字符串和数值):
public override string ToString()
{
return valueList[0].ToString();
}
答案 1 :(得分:0)
我假设sq是一个序列...
我没有使用openDicom,但我很确定你在做什么不会产生你想要的结果。
您有一个标记,描述和val_rep变量,但是您使用foreach填充它们,这意味着Sequence中的最后一个DataElement将是您检索的唯一值。使用以下方法可以达到相同的效果:
string tag = sq[sq.Count - 1].Tag.ToString();
string description = sq[sq.Count -1].VR.Tag.GetDictionaryEntry().Description;
string val_rep = sq[sq.Count - 1].VR.ToString();
从而从序列中检索最后一组值。我相信你会发现,如果你在执行时逐步执行foreach,它将加载DICOM文件中包含的所有不同的DataElements。
如果我离开这里,请随时在原帖中发表评论或发布更多信息。
答案 2 :(得分:0)
标签值将作为一个通用对象数组从“'值”中检索。成员' DataElement'使用' ToArray()' “价值”中的重写方法'类。
cniDicomTagList = new List<CNIDicomTag>();
foreach (DataElement element in sq)
{
string tag = element.Tag.ToString();
string description = element.VR.Tag.GetDictionaryEntry().Description;
object[] valueArr = element.Value.ToArray();
cniDicomTagList.Add(new CNIDicomTag(tag, description, valueArr));
}