gpt4 book ai didi

c++ - 使用 DCMTK (C++) 压缩 DICOM 文件

转载 作者:行者123 更新时间:2023-11-30 02:41:27 25 4
gpt4 key购买 nike

该死的,我很沮丧......

按照本页中的示例 http://support.dcmtk.org/docs/mod_dcmjpeg.html , 我写了一个 C++ 程序来解压缩 JPEG 压缩的 DICOM 图像文件

现在我想反之亦然,从未压缩到压缩,如果我在同一页面中使用另一个示例,使用相同(或其他文件)代码编译并运行但无法压缩文件。 ..

我看到在下面的代码之后,原来的Xfer和Current是一样的,这不好,因为需要不同

dataset->chooseRepresentation(EXS_JPEGProcess14SV1, &params);

这就像chooseRepresentation 方法失败....

更多的行

dataset->canWriteXfer(EXS_JPEGProcess14SV1)

返回错误

我看到dcpixel.cc文件里面,带debug的代码进去

DcmPixelData::canChooseRepresentation(......... 
....
....
// representation not found, check if we have a codec that can create the
// desired representation.
if (original == repListEnd)
{
result = DcmCodecList::canChangeCoding(EXS_LittleEndianExplicit, toType.getXfer());
}

结果为假....

我该如何解决?有人拥有可以使用 DCMTK 或其他库压缩 DICOM 图像的代码

这是完整的代码:

int main()
{

//dcxfer.h
DJDecoderRegistration::registerCodecs(); // register JPEG codecs
DcmFileFormat fileformat;

/**** MONO FILE ******/


if (fileformat.loadFile("Files/cnv3DSlice (1)_cnv.dcm").good())
{
DcmDataset *dataset = fileformat.getDataset();
DcmItem *metaInfo = fileformat.getMetaInfo();
DJ_RPLossless params; // codec parameters, we use the defaults


// this causes the lossless JPEG version of the dataset to be created
dataset->chooseRepresentation(EXS_JPEGProcess14SV1, &params);

// check if everything went well
if (dataset->canWriteXfer(EXS_JPEGProcess14SV1))
{
// force the meta-header UIDs to be re-generated when storing the file
// since the UIDs in the data set may have changed
delete metaInfo->remove(DCM_MediaStorageSOPClassUID);
delete metaInfo->remove(DCM_MediaStorageSOPInstanceUID);

// store in lossless JPEG format
fileformat.saveFile("Files/test_jpeg_compresso.dcm", EXS_JPEGProcess14SV1);
}
}

DJDecoderRegistration::cleanup(); // deregister JPEG codecs

return 0;
}

最佳答案

当试图压缩你需要调用的图像时

DJEncoderRegistration::registerCodecs();

解压是

DJDecoderRegistration::registerCodecs(); 

关于c++ - 使用 DCMTK (C++) 压缩 DICOM 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com