我正在尝试读写dicom文件的属性值。
接口(interface)应该是这样的:

// 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给出了一些有关如何获取属性值的出色示例,但是这些示例并不像我所想的那样起作用。

这是我对这些示例的疑问。
  • 如何将属性值转换为其类型?
    if( header.FindDataElement( Tag(0x2, 0x13 ) )
         DataElement &de = header.GetDataElement( Tag(0x2, 0x13) );
    
  • 如果属性值是数组怎么办?
     sf=gdcm.StringFilter()
     sf.SetFile(r.GetFile())
     print sf.ToStringPair(gdcm.Tag(0x0028,0x0010))
    
  • 实际上,我非常喜欢以下解决方案。但这是否意味着我必须为每个属性编写一个接口(interface)?
     const DataSet &ds = file.GetDataSet();
     Attribute<0x0020,0x0032> at;
     at.Set( ds );
     if( at.GetValue() == 0.0 ) exit(1);
    

  • 任何建议将不胜感激。

    最佳答案

    您已在GDCM邮件列表中发布了确切的复制/粘贴消息:

  • https://sourceforge.net/p/gdcm/mailman/message/34736982/

  • 我在这里回答了您的问题:
  • https://sourceforge.net/p/gdcm/mailman/message/34737182/

  • 为了方便起见,这里再次是:

    关于c++ - GDCM:获取代码值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34585173/

    10-13 05:05