DCMTK读取dicom图像
背景,使用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图像相关推荐
- DCMTK:读取DICOM图像并创建匹配的演示状态
DCMTK:读取DICOM图像并创建匹配的演示状态 读取DICOM图像并创建匹配的演示状态 读取DICOM图像并创建匹配的演示状态 #include "dcmtk/config/osconf ...
- DCMTK:读取DICOM图像,并使用设置创建PGM位图
DCMTK:读取DICOM图像,并使用设置创建PGM位图 读取DICOM图像,并使用设置创建PGM位图 读取DICOM图像,并使用设置创建PGM位图 #include "dcmtk/conf ...
- DCMTK:读取DICOM图像,添加模态LUT并将其写回
DCMTK:读取DICOM图像,添加模态LUT并将其写回 读取DICOM图像,添加模态LUT并将其写回 读取DICOM图像,添加模态LUT并将其写回 #include "dcmtk/conf ...
- DCMTK:读取DICOM图像,添加一个Curve并将其写回
DCMTK:读取DICOM图像,添加一个Curve并将其写回 读取DICOM图像,添加一个Curve并将其写回 读取DICOM图像,添加一个Curve并将其写回 #include "dcmt ...
- python读取dicom序列_python读取dicom图像(SimpleITK和dicom包实现)
1. 用SimpleITK读取dicom序列: import SimpleITK as sitk import numpy as np img_path='F:\\dataset\\pancreas\ ...
- pydicom读取头文件_python读取dicom图像(SimpleITK和dicom包实现)_愿十四亿神州尽舜尧-CSDN博客_python读取dicom...
1. 用SimpleITK读取dicom序列:import SimpleITK as sitkimport numpy as npimg_path='F:\\dataset\\pancreas\\Ou ...
- DICOM医学图像格式转换的C++实现 DIOCM转 BMP、读取DICOM图像(转载)
代码: //zoukeke 1670386358@qq.com 2020年3月17日 #include "stdafx.h" #include <opencv2/opencv ...
- DCMTK、ITK、VTK读取dicom信息
DCMTK.ITK.VTK读取dicom影像数据的方法 直接上代码,调用不同的医学影像库读取dicom影像信息 1. DCMTK读取影像中的pixelData //参数 list:为输入的图像文件名列 ...
- python读取dicom格式的图像并转为png格式
使用网上的大多数格式转换过来图像失真过于严重,出现了这种情况: 而原始图像是: 读取的过程中直接变成了二值图,所以就先对读取到的原始像素矩阵做归一化,在*255变为灰度图,代码如下: import S ...
最新文章
- 安全人员称攻击Google的是业余黑客
- 算法(第四版)之快速排序
- 前端学习(2696):重读vue电商网站17之监听图片上传成功事件
- python带参数的装饰器_Python-----带参数的装饰器以及补充
- 【iOS】Could not launch Verify the Developer App certificate for your account is trusted on your devic
- 软件测试:职场上那些你不得不学会的事儿
- 如何将Groovy中的文件读入字符串?
- bcrypt java maven_BCrypt.checkpw()无效的盐版本异常
- 第七周 linux加载和启动一个可执行程序
- vue开发环境的搭建流程
- 2007.05.07 不再如此堕落
- 普罗米修斯 感染组合表
- 用什么手机软件可测试无线信道,wifi信道
- Redis和MySQL保持数据一致性
- 网页端播放视频加速方法
- 设计一个以1秒频率闪烁的LED灯(亮灭各500ms)
- 如何查看主机IP地址
- proc*c/c++简介
- Web实验六 JavaScript实验
- C#:Krypton控件使用方法详解(第九讲) ——kryptonRadioButton