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

Любые предложения буду благодарен.

2

Решение

Вы отправили точное сообщение о копировании / вставке в список рассылки GDCM:

И я ответил на ваш вопрос здесь:

Для удобства вот еще раз:

gdcm :: Attribute действительно предназначен только для людей, имеющих дело с конкретными
приписывать. Если у вас нет тега раньше времени и только
базовый тип элемента данных, а затем взглянуть на
gdcm :: Element<>.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]