DCMTK:DCM文件转QImage

来源:互联网 发布:查找数组最大值最小值 编辑:程序博客网 时间:2024/06/09 14:55

代码如下,暂做记录

QImage *image = 0;///register RLE decompression codecsDcmRLEDecoderRegistration::registerCodecs(OFFalse, OFTrue);/// register JPEG decompression codecsDJDecoderRegistration::registerCodecs();DcmFileFormat *fileFormat = new DcmFileFormat();OFCondition condition = fileFormat->loadFile("test.dcm");if(!condition.good()) {   qDebug()<<"DcmConvert::set file fail:"<<endl;   return;}else {   QImage *image = 0;   DcmDataset * dset = fileFormat->getDataset();   DicomImage *dcmImage = new DicomImage(m_fileFormat, dset->getOriginalXfer(), CIF_MayDetachPixelData);    if (dcmImage != NULL) {        if(dcmImage->getStatus() == EIS_Normal) {            dcmImage->setNoDisplayFunction();            dcmImage->hideAllOverlays();            dcmImage->setNoVoiTransformation();            int width = dcmImage->getWidth();            int height = dcmImage->getHeight();            ulong size = width * height;            if(dcmImage->isMonochrome()) {                uchar *data = new uchar[size];                dcmImage->setMinMaxWindow();                dcmImage->getOutputData(data, size, 8);                image = new QImage(data, width, height, 8, QImage::Format_Mono);            }            else {                size = size * 4;                uchar *data = new uchar[size];                uchar* pixelData = (uchar *)(dcmImage->getOutputData(8));                unsigned long y = 0;                for(unsigned long x = 0; x < size; x+=4) {                    data[x] = pixelData[y];     //R                    data[x+1] = pixelData[y+1]; //G                    data[x+2] = pixelData[y+2]; //B                    data[x+3] = 0xFF; //Alpha                    y += 3;                }                image = new QImage(data, width, height,QImage::Format_RGBA8888);            }          else {            qDebug() << "Error: cannot load DICOM image (" << DicomImage::getString(dcmImage->getStatus()) << ")" << endl;          }          delete dcmImage;          dcmImage = 0;        }    }}
0 0
原创粉丝点击