c++数据读取、保存之dcm格式(需要有dcmtk)

#include <dcmtk/config/osconfig.h>
#include <dcmtk/dcmdata/dctk.h>

//读数据        

DcmFileFormat dfile;
                    OFCondition result = dfile.loadFile(path.c_str()); // 加载文件
                    if (result.bad())
                        return ERROR;
                    DcmMetaInfo* Metalnfo = dfile.getMetaInfo(); // 文件元信息
                    DcmTag Tag = Metalnfo->getTag();      // 从元信息中获取标签

                    DcmDataset* data = dfile.getDataset(); // 数据集

                    DcmElement* element = NULL;
                    result = data->findAndGetElement(DCM_PixelData, element);
                    if (result.bad())
                        return ERROR;
                    unsigned short* data;
                    result = element->getUint16Array(data);

//保存数据

data->putAndInsertUint16Array(DCM_PixelData, data, height * width * z);
                    data->putAndInsertString(DCM_NumberOfFrames, std::to_string(z).c_str());
                    data->putAndInsertString(DCM_Rows, std::to_string(height).c_str());
                    data->putAndInsertString(DCM_Columns, std::to_string(width).c_str());
                    char temp[255];
                    data->putAndInsertString(DCM_SOPInstanceUID, temp);
                    dfile.getMetaInfo()->putAndInsertString(DCM_MediaStorageSOPInstanceUID, temp);
                    OFCondition status = dfile.saveFile(path.c_str(), EXS_LittleEndianExplicit);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值