DCMTK简介三-dcmdata程序库
本帖最后由 medimage 于 2015-12-4 21:22 编辑三、dcmdata程序库
-dcmdata:一个数据编码/解码库和可用的工具这个模块包含了一些类来管理Dicom数据结构和文件。同时它也提供了对DICOMDIR文件的支持以满足Dicom storage media(存储介质)的需要。----------------------------------------------------主要的接口类有:--DcmFileFormat:a class handling the DICOM file format (with meta header) 。头文件在dcfilefo.h。***详情在单独的文档中分析***--DcmDataset:a class handling the DICOM dataset format (files without meta header) 。头文件在dcdatset.h。***详情在单独的文档中分析***--DcmItem:a class representing a collection of DICOM elements。头文件在dcitem.h。***详情在单独的文档中分析***--DcmElement:abstract base class for all DICOM elements。头文件在dcelem.h。***详情在单独的文档中分析***。它的派生类包括:DcmAttributeTag\DcmByteString\DcmFloatingPointDouble\DcmFloatingPointSingle\DcmOtherByteOtherWord\DcmSequenceOfItems\DcmSignedLong\DcmSignedShort\DcmUnsignedLong\DcmUnsignedShort--------------------------------------------------------------------------------------------------------工具:这个模块包含了下面的命令行工具:dcm2xml: Convert DICOM file and data set to XMLdcmconv: Convert DICOM file encodingdcmcrle: Encode DICOM file to RLE transfer syntaxdcmdrle: Decode RLE-compressed DICOM filedcmdump: Dump DICOM file and data setdcmftest: Test if file uses DICOM part 10 formatdcmgpdir: Create a general purpose DICOMDIRdcmodify: Modify DICOM filesdump2dcm: Convert ASCII dump to DICOM filexml2dcm: Convert XML document to DICOM file or data set***暂时不对命令行工具进行详细的分析***-------------------------------------------------------------------------------------------------------举例:--调入一个DICOM文件,输出病人姓名DcmFileFormat fileformat;OFCondition status = fileformat.loadFile("test.dcm");if (status.good()){OFString patientsName;if (fileformat.getDataset()->findAndGetOFString(DCM_PatientsName, patientsName).good()){ cout << "Patient's Name: " << patientsName << endl;} else cerr << "Error: cannot access Patient's Name!" << endl;} elsecerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;--创建一个DICOM dataset数据集,并保存为文件char uid;DcmFileFormat fileformat;DcmDataset *dataset = fileformat.getDataset();dataset->putAndInsertString(DCM_SOPClassUID, UID_SecondaryCaptureImageStorage);dataset->putAndInsertString(DCM_SOPInstanceUID, dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT));dataset->putAndInsertString(DCM_PatientsName, "Doe^John");/* ... */dataset->putAndInsertUint8Array(DCM_PixelData, pixelData, pixelLength);OFCondition status = fileformat.saveFile("test.dcm", EXS_LittleEndianExplicit);if (status.bad())cerr << "Error: cannot write DICOM file (" << status.text() << ")" << endl;--如何为多个文件创建一般目的的DICOMDIRDicomDirInterface dicomdir;OFCondition status = dicomdir.createNewDicomDir();if (status.good()){while ( /* there are files */ ) dicomdir.addDicomFile( /* current filename */ );status = dicomdir.writeDicomDir();if (status.bad()) cerr << "Error: cannot write DICOMDIR (" << status.text() << ")" << endl;} elsecerr << "Error: cannot create DICOMDIR (" << status.text() << ")" << endl;------------------------------------------------------------
好贴 留个脚印。。。。。。 好贴,顶起 谢谢分享 看看!!!!!谢谢楼主!!! 回复看下,!! 先看看在说 学习了!!!!!!!!! 好贴!
页:
[1]
2