#include <vtkDICOMTag.h>
#include <vtkDICOMTag.h>
#include <vtkDICOMTagPath.h>
#include <vtkDICOMCompiler.h>
#include <vtkDICOMDictHash.h>
int readTag()
{
///
/// \brief 讀取tag信息
///
vtkNew<vtkStringArray> arr;
QString path("D:/1203518");//DICOM序列目錄
vtkNew<vtkDICOMDirectory> ddir;
ddir->SetDirectoryName(qUtf8Printable(path));
ddir->Update();
int NumberOfSeries = ddir->GetNumberOfSeries();
if(0 == NumberOfSeries)
{
return 1;
}
//獲取文件列表
auto stringArray = ddir->GetFileNamesForSeries(0);
int N = stringArray->GetNumberOfValues();//切片數量
//文件排序
vtkNew<vtkDICOMReader> reader;
reader->SetFileNames(stringArray);
reader->SetMemoryRowOrderToFileNative();
reader->SortingOn();
reader->UpdateInformation() ;
reader->Update();
//獲取基本信息
auto meta = reader->GetMetaData();
QMap<QString, QVariant> tagsMap;
for(auto i = meta->Begin();i != meta->End(); ++i)
{
auto tag = i->GetTag();
auto val = i->GetValue();
QString tagKey = QString("%1|%2")
.arg(tag.GetGroup(), 4, 16, QChar('0'))
.arg(tag.GetElement(), 4, 16, QChar('0'));
QString tagVal = QString::fromStdString(val.AsUTF8String());
if(tagVal.length() > 0 && tagVal.length() < 200)
{
tagsMap[tagKey] = tagVal;
qDebug()<<tagKey<<tagVal;
}
}
return 0;
}