1

我正在使用 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 标签值?

4

3 回答 3

1

value.ToString()方法未实现。在 Value.cs 中实现您自己的方法,您将获得“Value”的值。

例如(仅字符串和数值):

public override string ToString()
{
 return valueList[0].ToString();
}
于 2011-03-30T12:00:42.253 回答
0

我假设 sq 是一个序列......

我没有与 openDicom 合作过,但我很确定你在那里做的事情不会产生你想要的结果。

您只有一个标签、描述和 val_rep 变量,但您使用 foreach 填充它们,这意味着序列中的最后一个 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 文件中包含的所有不同 DataElement。

如果我不在这里,请随时在您的原始帖子中回复评论或发布更多信息。

于 2010-09-08T15:53:27.760 回答
0

使用“Value”类中的“ToArray()”覆盖方法从“DataElement”中的“Value”成员中检索标记值作为通用对象数组。

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));
}
于 2015-01-06T14:45:40.503 回答