Я пытаюсь читать и записывать значения атрибутов файла dicom. интерфейсы должны быть что-то вроде этого:GDCM: получение значения тега
// 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))
На самом деле, мне очень нравится следующее решение. Но означает ли это, что мне нужно написать интерфейс для атрибута КАЖДЫЙ?
const DataSet &ds = file.GetDataSet(); Attribute<0x0020,0x0032> at; at.Set(ds); if(at.GetValue() == 0.0) exit(1);
Любые предложения будут благодарны.
Да, я просто надеялся получить наилучшую практику для этого вопроса. И я не ожидал, что кто-то увидит этот вопрос с обеих сторон. Спасибо за ваш ответ. :) – Steve