我基本上是在尝试使用 gdcm C++ 库从 DICOM 文件中读取所有或大部分属性值。我很难找出任何非字符串值。gdcm 示例通常假设我事先知道组/元素编号,因此我可以使用属性模板类,但我不需要或对它们感兴趣,我只需要报告所有属性名称和值。实际上这些值应该进入 XML,所以我需要一个字符串表示。我目前拥有的是这样的:
for (gdcm::DataSet::ConstIterator it = ds.Begin(); it!=ds.End(); ++it) {
const gdcm::DataElement& elem = *it;
if (elem.GetVR() != gdcm::VR::SQ) {
const gdcm::Tag& tag = elem.GetTag();
std::cout << dict.GetDictEntry(tag).GetKeyword() << ": ";
std::cout << elem.GetValue() << "\n";
}
}
对于像 UL 这样的数值,输出似乎类似于“Loaded:4”,可能意味着库已经加载了 4 个字节的数据(一个无符号长整数)。这根本没有帮助,如何获得实际值?我肯定忽略了一些明显的东西。
从示例中,似乎有一个 gdcm::StringFilter 类可以做到这一点,但它似乎想在 DICOM 文件中单独搜索每个元素,这会使算法复杂度成为二次方,这当然是我想要的喜欢避免。
TIA 帕沃