GDCM:获取标签值

时间:2016-01-04 05:28:59

标签: c++ gdcm

我正在尝试读取和写入dicom文件的属性值。 接口应该是这样的:

// only need to support std::string, int, float, float*, etc.
template<class T>
T getTagValue(const DataSet& ds, const Tag& tag);

template<class T>
void setTagValue(DataSet& ds, const Tag& tag, const T& value);

FAQ of GDCM给出了一些如何获取属性值的很好的例子,但这些例子不像我想的那样工作。

以下是关于这些示例的问题。

  1. 如何将属性值转换为其类型?

    if( header.FindDataElement( Tag(0x2, 0x13 ) )
         DataElement &de = header.GetDataElement( Tag(0x2, 0x13) );
    
  2. 如果属性值是数组怎么办?

     sf=gdcm.StringFilter()
     sf.SetFile(r.GetFile())
     print sf.ToStringPair(gdcm.Tag(0x0028,0x0010))
    
  3. 实际上,我真的很喜欢以下解决方案。但这是否意味着我必须为每个属性编写一个接口?

     const DataSet &ds = file.GetDataSet();
     Attribute<0x0020,0x0032> at;
     at.Set( ds );
     if( at.GetValue() == 0.0 ) exit(1);
    
  4. 任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您已在GDCM邮件列表上发布了完整的复制/粘贴消息:

我在这里回答了你的问题:

为方便起见,这又是:

  

gdcm :: Attribute实际上只适用于处理特定问题的人   属性。如果你现在没有提前标签而且只有   数据元素的基础类型,然后看看   gdcm ::元素&lt;&GT;