我正在尝试读取和写入 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提供了一些很好的例子来说明如何获取属性值,但是这些例子并不像我想的那样工作。
以下是我对这些示例的问题。
如何将属性值转换为其类型?
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);
任何建议将不胜感激。