使用gdcm写一个多帧dcm图像?

时间:2017-09-19 15:51:33

标签: c++ dicom gdcm

使用gdcm我可以使用ImageReader读取多帧dicom文件,但我无法使用ImageWriter编写多帧dicom文件,这就是我的工作:

gdcm::PhotometricInterpretation pi = gdcm::PhotometricInterpretation::RGB;
gdcm::PixelFormat pf = gdcm::PixelFormat::UINT8; // pixel format
pf.SetSamplesPerPixel(3); // RGB
gdcm::Image &image = iw.GetImage() ; 

image.SetNumberOfDimensions( 3 );
unsigned int dims[3] = {};
if (imageQt != NULL) { // not elegant
    dims[0] = imageQt->width() ;
    dims[1] = imageQt->height() ;
    //dims[3] = 500 ;
} else {
    qDebug() << "imageQt is null" ;
    return false ;
}
image.SetDimensions(dims);
image.SetPixelFormat(pf);
image.SetPhotometricInterpretation(pi);
image.SetTransferSyntax( gdcm::TransferSyntax::ExplicitVRLittleEndian );
gdcm::DataElement pixeldata( gdcm::Tag(0x7fe0,0x0010) );
pixeldata.SetByteValue( buf, len );
image.SetDataElement(pixeldata);

// qDebug() << image.GetBufferLength() ;
iw.SetFileName(fileName);
if (!iw.Write()) {
    qDebug() << "error ocured when writting file" << fileName ;
    return false ;
}

当我读取多帧文件时,getBufferLength()返回缓冲区的长度包含所有帧,但是这里它返回包含一帧的缓冲区的长度。 我在这里失踪了什么? 提前谢谢。

0 个答案:

没有答案
相关问题