我正在尝试读取和写入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给出了一些如何获取属性值的很好的例子,但这些例子不像我想的那样工作。
以下是关于这些示例的问题。
如何将属性值转换为其类型?
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);
任何建议都将不胜感激。
答案 0 :(得分:2)
您已在GDCM邮件列表上发布了完整的复制/粘贴消息:
我在这里回答了你的问题:
为方便起见,这又是:
gdcm :: Attribute实际上只适用于处理特定问题的人 属性。如果你现在没有提前标签而且只有 数据元素的基础类型,然后看看 gdcm ::元素&lt;&GT;