I'm using DcmDataset class to encapsulate a series of dicom files.
I can read the single dicom, But can't open these dicoms for 3D reconstruction with 3D slicer software after writing raw data to these dicom files as a series .
Is there some error in my method?
or is there a example code in encapsulating a study or a series ?
Thanks all.
1.a signle dicom encapsulated by my program.
2.My writing code:
Code: Select all
OFCondition status;
//create DICOM file
m_DcmFileFormat = new DcmFileFormat();
m_DcmDataset = m_DcmFileFormat->getDataset();
//encapsulate SOP Common Module
m_DcmDataset->putAndInsertString(DCM_SOPClassUID,UID_CTImageStorage);
char uid[100];
m_DcmDataset->putAndInsertString(DCM_SOPInstanceUID,dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT));
m_DcmDataset->putAndInsertString(DCM_SpecificCharacterSet,"ISO_IR 100");
DcmDate *instanceCreationDate = new DcmDate(DCM_InstanceCreationDate);
status = instanceCreationDate->setCurrentDate();
if (!status.good())
{
qDebug()<<"Create InstanceCreationDate error!";
}
m_DcmDataset->insert(instanceCreationDate);
instanceCreationDate = NULL;
//pixel data
DcmPixelData *pixelData = new DcmPixelData(DCM_PixelData);
status = pixelData->putUint16Array(vo_PixelData,m_DicomSize);
if (!status.good())
{
qDebug()<<"pixelData->putUint16Array error!";
}
//pixelData->putFloat32Array(vo_PixelData,m_DicomSize);
status = m_DcmDataset->insert(pixelData);
if (!status.good())
{
qDebug()<<"m_DcmDataset->insert(pixelData) error!";
}
qDebug()<<"add:"<<QString::number(vo_InstanceNumber);
3. I can't open these dicoms with 3D slicer.