dicom协议开源库DCMTK安装和使用
背景
DCMTK是由德国offis公司提供的开源项目,几乎实现了完整的DICOM协议,是3大dicom开源库之一。DCMTK采用C++语言开发。
准备工作
1. 安装CMake https://cmake.org/download/,我电脑里安装的3.8.2版本。
2. 下载dcmtk3.6.0 源码,解压。
CMAKE编译
1.修改CMakeList.txt配置文件。打开CMakeLists.txt,使用文本编辑器的替换功能,把/MTd 替换成/MDd 、/MD 替换成 /MT,这样做是指定我们编译动态库版本而非静态库版本;修改DCMTK支持库,搜索DCMTK build options ,可以将前面的5个支持项(DCMTK_WITH_TIFF,DCMTK_WITH_PNG,DCMTK_WITH_XML,DCMTK_WITH_ZLIB,DCMTK_WITH_OPENSSL)都设置成ON,需要相关的库支持,不过测试过不下载相应的库,后面的编译也不会出问题,所以这里根据需要设置。
2. a) 关闭VS2012,打开CMake-gui,选择dcmtk3.6.0源码位置,选择生成路径;
b) 点击Configure,选择Visual Studio 11 2012 Win64(我的系统是64位的,这里还可以选择VisualStudio 11 2012, 这样会生成X86库),点击finish。
c) 根据需要设置下CMAKE_INSTALL_PREFIX,64位程序默认是”C:/ProgramFiles/DTMCK”,因为我计算机上的权限问题,我的安装路径改到“D:/Program Files/DTMCK”,设置好之后点击Generate,等待生成VS工程,生成完成之后,点击OpenProject打开VS工程。
VS2012编译dcmtk库
经过上面的步骤,我们已经得到了用于编译dcmtk库的vs2012工程,点击vs2012菜单:生成-批生成(英文版是Build->BatchBuild),选择ALL_BUILD Debug版和Release版,点击生成,漫长的等待之后,会出现下面的画面,代表dcmtk库已经生成好了。安装库,点击vs2012菜单:生成-批生成,选择INSTALL Debug版本,点击生成,库安装到前面指定的目录。
VS项目属性配置(这里使用的都是64位库)
1. 新建一个VS工程,添加DTMCK头文件包含:
2. 添加DTMCK库路径和需要的库包含:
3. 测试源码,(这里借用了Opencv做图像显示)
//dcmtk.cpp : 定义控制台应用程序的入口点。
#include"stdafx.h"
#include"dcmtk\config\osconfig.h"
#include"dcmtk\dcmdata\dctk.h"
#include"opencv2\opencv.hpp"
#include"dcmtk\dcmimage\diargimg.h"
usingnamespacecv;
usingstd::cout;
int_tmain(intargc,_TCHAR*argv[])
{
DcmFileFormatdfile;
dfile.loadFile("image-000001.dcm");
DcmMetaInfo*Metalnfo=dfile.getMetaInfo();
DcmTagTag;
Tag=Metalnfo->getTag();
Uint16G_tag=Tag.getGTag();
cout<<"G_tag: "<<G_tag<<std::endl;
DcmDataset*data=dfile.getDataset();
DcmElement*element=NULL;
data->findAndGetElement(DCM_PixelData,element);
doubledata_len=data->getLength();
doubleelement_len=element->getLength();
cout<<"data_len "<<data_len<<std::endl;;
cout<<"elemetn_len "<<element_len<<std::endl;;
OFStringpatientName;
data->findAndGetOFString(DCM_PatientName,patientName);
cout<<"patientName: "<<patientName.data()<<std::endl;;
OFStringpatientId;
data->findAndGetOFString(DCM_PatientID,patientId);
cout<<"patientId: "<<patientId<<std::endl;;
OFStringpatientAge;
data->findAndGetOFString(DCM_PatientAge,patientAge);
cout<<"patientAge: "<<patientAge.data()<<std::endl;;
OFStringPatientPosition;
data->findAndGetOFString(DCM_PatientPosition,PatientPosition);
cout<<"PatientPosition: "<<PatientPosition.data()<<std::endl;;
OFStringImagePositionPatient;
data->findAndGetOFString(DCM_ImagePositionPatient,ImagePositionPatient);
cout<<"ImagePositionPatient: "<<ImagePositionPatient<<std::endl;;
OFStringPixelSpacing;
data->findAndGetOFString(DCM_PixelSpacing,PixelSpacing);
cout<<"PixelSpacing: "<<PixelSpacing.data()<<std::endl;;
Uint16*pixData16;
element->getUint16Array(pixData16);
cout<<element->getLength()<<std::endl;
cv::Matimag=cv::Mat(512,512,CV_8U,pixData16);// , element);
for(inti=0;i<100;i++)
{
cout<<*(pixData16+i)<<" ";
}
cv::imshow("image",imag);
cv::waitKey(0);
return0;
}
结果
上面编译使用的是64位库,32位库编译使用过程和64库一样。
百度网盘连接有VS2012 VS2013 32位 64位 Debug Release 库和测试用数据:
http://pan.baidu.com/s/1bpzZB4r r678
opencv库的安装使用请参见我的上一篇博文:http://blog.csdn.net/wanhongluli/article/details/77573854
dicom协议开源库DCMTK安装和使用相关推荐
- 【转】DICOM:DICOM三大开源库对比分析之“数据加载”
背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,"只要Sante DICOM Editor打不开 ...
- Redis中使用Lua脚本(续)- Linux下Lua-cjson开源库的安装和使用
Redis中使用Lua脚本(续)- Lua-cjson开源库的安装和使用 问题 原因 解决方案 在Redis的lua脚本编写中,我们可能会用到json的序列化和反序列化. Json序列化: -- Re ...
- FCL碰撞检测开源库的安装和链接
简介 FCL是一个用于碰撞检测和碰撞可能性估计的开源库,经常和SLAM中的八叉树地图Octomap一起在路径规划中使用. 下载 FCL官网提供了多种下载的方式,第一种是下载ros中的FCL库,但是fu ...
- MQTT开源库mosquitto安装和使用(一)
文章目录 1.下载和安装 1.1.下载地址 1.2.安装 1.2.1.二进制安装 1.2.2.windows版本二进制安装 1.2.2.1.下载和安装 1.2.2.2.配置环境变量 1.2.2.3.启 ...
- DICOM:fo-dicom、dcm4che14、dcm4chee等开源库持续自我维护
题记: DICOM专栏系列虽然写了多年,但是依然不能解决大家日常中遇到的种种问题,其实这恰恰就是程序员(码农)工作的最大乐趣所在.就像每个人的人生一样,所处的环境不同,所遭遇的事件不同,结果自然就不同 ...
- 【已解决】nimfa 环境的详细搭建过程 + 各种依赖库的安装、下载、调试
为方便交流学习,工具已整理上传至CSDN.作者:玉林师范学院计算机系 guomutian911. 开源包下载地址: 也可邮件获得,316190672@qq.com Numpy 下载地址:http:// ...
- Python库的安装详解
安装非标准Python库 Python标准库中,用于网页数据采集的有urllib库,同样,有很多优秀的开源库,像BeautifulSoup库.Requests库等. 接下来就介绍一些开源库的安装方法 ...
- react-native 为本地js和开源库的js编写.d.ts声明文件
读书不觉已春深 !明日清明节 在使用Typescript编写程序RN过程中遇到困扰,且不论react,不论在浏览器中,只论写react-native的APP,怎么使用 declare声明文件 和 na ...
- Windows下使用DCMTK开源库对DICOM协议的医学图像进行解析与显示
DICOM(Digital Imaging and Communications in Medicine),是用于医学影像处理.储存.打印.传输的一组通用标准协定.目前,被广泛应用于放射医疗,心血管成 ...
- 【转】DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像
转自:https://www.cnblogs.com/mfrbuaa/p/4004114.html 有修订 背景介绍: 近期项目需求,需要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发 ...
最新文章
- DB性能调优之RAID比较
- LeetCode H-Index II(二分法)
- 2018焦作网络赛-E- Jiu Yuan Wants to Eat
- oracle 快速上手,Oracle学习笔记:快速上手
- 基于Jenkins Pipeline的ASP.NET Core持续集成实践
- 工作47:继续理解父子组件
- java8新特性(6)— 日期与时间
- StreamWriter、StreamReader 写读文件的两种方法
- 对于国产芯片何时能挑大梁
- 浅谈JavaScript代码预解析 + 示例详解
- 2017《面向对象程序设计》课程作业一
- jquery文档就绪的三种书写方式
- net实现基础的舆情监测系统思路
- win10无线断开无法连接服务器,win10wifi自动断开什么原因_win10wifi自动断开且无法连接如何解决...
- 移动硬盘突然断电导致坏道产生
- Intel NUC10 i7FNH寒霜峡谷购机安装winesxi
- awk sed 删除文件最后列及最后一个字符
- 第一章-问题求解策略-LA4234-Binary Clock
- 《计算机网络 自顶向下方法》读书笔记(三)
- 1076: 三位数求解 Python
热门文章
- PHP网上书店销售系统
- 此语言无法安装在此计算机上win7,win7系统无法安装英文语言包解决方法
- 用python自动办公 麻瓜_(视频教程)下载:麻瓜编程Python商业爬虫学徒计划python自动化办公麻瓜麻瓜编程...
- 基于SSM的网上购物商城管理系统
- 创建三维零件的DH坐标系
- 计算机英语潘雪峰,《小学三年级英语听力训练指导策略的研究》研究报告
- OV2640摄像头模块
- vscode下载与安装教程
- WIFI无线协议802.11a/b/g/n/ac的演变以及区别
- ANDROID cmake版本下载,android studio中为gradle指定cmake版本