背景,使用VTK、ITK读取dicom图像,出现中文路径,无法读取的情况,才找到了DCMTK作为替换方案

#include <dcmtk/dcmdata/dctk.h>
#include <dcmtk/dcmdata/dcfilefo.h>
#include <dcmtk/dcmimgle/dcmimage.h>
#include <dcmtk/dcmimage/diregist.h>
#include <dcmtk/dcmjpeg/djdecode.h>
#include <dcmtk/ofstd/ofstring.h>
#include <dcmtk/dcmdata/dcostrmb.h>DcmFileFormat* dcmff = new DcmFileFormat;OFCondition oc = dcmff->loadFile(OFFilename(DicomFileName.c_str()));if (oc.bad()){std::cout << "Fail:" << oc.text();return false;}DcmDataset* dataset = dcmff->getDataset();OFString   bits;if (dataset->findAndGetOFString(DCM_BitsAllocated, bits).bad()){return false;}int iBits = atoi(bits.c_str());// decompress data set if compressedif (dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL).good() &&dataset->canWriteXfer(EXS_LittleEndianExplicit)){DicomImage* img = new DicomImage(dataset, EXS_LittleEndianExplicit);int ingCount = img->getFrameCount();int nWidth = img->getWidth();          //获得图像宽度int nHeight = img->getHeight();         //获得图像高度Size[0] = nWidth;Size[1] = nHeight;Size[2] = ingCount;if (iBits == 8){charDataPtr = new unsigned char[Size[0] * Size[1] * Size[2]];DataType = "unsigned_char";for (int i = 0; i < ingCount; i++){unsigned char* pixelData = (unsigned char*)(img->getOutputData(8, i));memcpy(charDataPtr + i * nHeight * nWidth, pixelData, nHeight* nWidth * sizeof(unsigned char));}}else if (iBits == 16){shortDataPtr = new short[Size[0] * Size[1] * Size[2]];DataType = "short";for (int i = 0; i < ingCount; i++){short* pixelData = (short*)(img->getOutputData(16, i));memcpy(shortDataPtr + i * nHeight * nWidth, pixelData, nHeight* nWidth * sizeof(short));}}}

DCMTK读取dicom图像相关推荐

  1. DCMTK:读取DICOM图像并创建匹配的演示状态

    DCMTK:读取DICOM图像并创建匹配的演示状态 读取DICOM图像并创建匹配的演示状态 读取DICOM图像并创建匹配的演示状态 #include "dcmtk/config/osconf ...

  2. DCMTK:读取DICOM图像,并使用设置创建PGM位图

    DCMTK:读取DICOM图像,并使用设置创建PGM位图 读取DICOM图像,并使用设置创建PGM位图 读取DICOM图像,并使用设置创建PGM位图 #include "dcmtk/conf ...

  3. DCMTK:读取DICOM图像,添加模态LUT并将其写回

    DCMTK:读取DICOM图像,添加模态LUT并将其写回 读取DICOM图像,添加模态LUT并将其写回 读取DICOM图像,添加模态LUT并将其写回 #include "dcmtk/conf ...

  4. DCMTK:读取DICOM图像,添加一个Curve并将其写回

    DCMTK:读取DICOM图像,添加一个Curve并将其写回 读取DICOM图像,添加一个Curve并将其写回 读取DICOM图像,添加一个Curve并将其写回 #include "dcmt ...

  5. python读取dicom序列_python读取dicom图像(SimpleITK和dicom包实现)

    1. 用SimpleITK读取dicom序列: import SimpleITK as sitk import numpy as np img_path='F:\\dataset\\pancreas\ ...

  6. pydicom读取头文件_python读取dicom图像(SimpleITK和dicom包实现)_愿十四亿神州尽舜尧-CSDN博客_python读取dicom...

    1. 用SimpleITK读取dicom序列:import SimpleITK as sitkimport numpy as npimg_path='F:\\dataset\\pancreas\\Ou ...

  7. DICOM医学图像格式转换的C++实现 DIOCM转 BMP、读取DICOM图像(转载)

    代码: //zoukeke 1670386358@qq.com 2020年3月17日 #include "stdafx.h" #include <opencv2/opencv ...

  8. DCMTK、ITK、VTK读取dicom信息

    DCMTK.ITK.VTK读取dicom影像数据的方法 直接上代码,调用不同的医学影像库读取dicom影像信息 1. DCMTK读取影像中的pixelData //参数 list:为输入的图像文件名列 ...

  9. python读取dicom格式的图像并转为png格式

    使用网上的大多数格式转换过来图像失真过于严重,出现了这种情况: 而原始图像是: 读取的过程中直接变成了二值图,所以就先对读取到的原始像素矩阵做归一化,在*255变为灰度图,代码如下: import S ...

最新文章

  1. 安全人员称攻击Google的是业余黑客
  2. 算法(第四版)之快速排序
  3. 前端学习(2696):重读vue电商网站17之监听图片上传成功事件
  4. python带参数的装饰器_Python-----带参数的装饰器以及补充
  5. 【iOS】Could not launch Verify the Developer App certificate for your account is trusted on your devic
  6. 软件测试:职场上那些你不得不学会的事儿
  7. 如何将Groovy中的文件读入字符串?
  8. bcrypt java maven_BCrypt.checkpw()无效的盐版本异常
  9. 第七周 linux加载和启动一个可执行程序
  10. vue开发环境的搭建流程
  11. 2007.05.07 不再如此堕落
  12. 普罗米修斯 感染组合表
  13. 用什么手机软件可测试无线信道,wifi信道
  14. Redis和MySQL保持数据一致性
  15. 网页端播放视频加速方法
  16. 设计一个以1秒频率闪烁的LED灯(亮灭各500ms)
  17. 如何查看主机IP地址
  18. proc*c/c++简介
  19. Web实验六 JavaScript实验
  20. C#:Krypton控件使用方法详解(第九讲) ——kryptonRadioButton

热门文章

  1. 一本书,一个软件思想和创意的T台大道
  2. 用C#.NET 与Webdriver写的抓取网页信息的小工具
  3. 手机页面出现乱码几种可能
  4. 从redis中取值 然后通过list进行分页查询
  5. 在linux下使用debugfs恢复rm删除的文件
  6. Flink流式计算从入门到实战 二
  7. 终于,我也出了篇R语言入门手册!
  8. MATLAB求解运输问题
  9. RAS使用拨号网络拨号的类
  10. java计算机毕业设计校园环境保护监督系统源程序+mysql+系统+lw文档+远程调试