2

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);

GDCMのFAQ には、属性値を取得する方法の素晴らしい例がいくつか示されていますが、これらの例は私が思っていたようには機能しません。

これらの例に関する私の質問は次のとおりです。

  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 に答える 1