背景

        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安装和使用相关推荐

  1. 【转】DICOM:DICOM三大开源库对比分析之“数据加载”

    背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,"只要Sante DICOM Editor打不开 ...

  2. Redis中使用Lua脚本(续)- Linux下Lua-cjson开源库的安装和使用

    Redis中使用Lua脚本(续)- Lua-cjson开源库的安装和使用 问题 原因 解决方案 在Redis的lua脚本编写中,我们可能会用到json的序列化和反序列化. Json序列化: -- Re ...

  3. FCL碰撞检测开源库的安装和链接

    简介 FCL是一个用于碰撞检测和碰撞可能性估计的开源库,经常和SLAM中的八叉树地图Octomap一起在路径规划中使用. 下载 FCL官网提供了多种下载的方式,第一种是下载ros中的FCL库,但是fu ...

  4. 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.启 ...

  5. DICOM:fo-dicom、dcm4che14、dcm4chee等开源库持续自我维护

    题记: DICOM专栏系列虽然写了多年,但是依然不能解决大家日常中遇到的种种问题,其实这恰恰就是程序员(码农)工作的最大乐趣所在.就像每个人的人生一样,所处的环境不同,所遭遇的事件不同,结果自然就不同 ...

  6. 【已解决】nimfa 环境的详细搭建过程 + 各种依赖库的安装、下载、调试

    为方便交流学习,工具已整理上传至CSDN.作者:玉林师范学院计算机系 guomutian911. 开源包下载地址: 也可邮件获得,316190672@qq.com Numpy 下载地址:http:// ...

  7. Python库的安装详解

    安装非标准Python库 Python标准库中,用于网页数据采集的有urllib库,同样,有很多优秀的开源库,像BeautifulSoup库.Requests库等.  接下来就介绍一些开源库的安装方法 ...

  8. react-native 为本地js和开源库的js编写.d.ts声明文件

    读书不觉已春深 !明日清明节 在使用Typescript编写程序RN过程中遇到困扰,且不论react,不论在浏览器中,只论写react-native的APP,怎么使用 declare声明文件 和 na ...

  9. Windows下使用DCMTK开源库对DICOM协议的医学图像进行解析与显示

    DICOM(Digital Imaging and Communications in Medicine),是用于医学影像处理.储存.打印.传输的一组通用标准协定.目前,被广泛应用于放射医疗,心血管成 ...

  10. 【转】DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像

    转自:https://www.cnblogs.com/mfrbuaa/p/4004114.html 有修订 背景介绍: 近期项目需求,需要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发 ...

最新文章

  1. DB性能调优之RAID比较
  2. LeetCode H-Index II(二分法)
  3. 2018焦作网络赛-E- Jiu Yuan Wants to Eat
  4. oracle 快速上手,Oracle学习笔记:快速上手
  5. 基于Jenkins Pipeline的ASP.NET Core持续集成实践
  6. 工作47:继续理解父子组件
  7. java8新特性(6)— 日期与时间
  8. StreamWriter、StreamReader 写读文件的两种方法
  9. 对于国产芯片何时能挑大梁
  10. 浅谈JavaScript代码预解析 + 示例详解
  11. 2017《面向对象程序设计》课程作业一
  12. jquery文档就绪的三种书写方式
  13. net实现基础的舆情监测系统思路
  14. win10无线断开无法连接服务器,win10wifi自动断开什么原因_win10wifi自动断开且无法连接如何解决...
  15. 移动硬盘突然断电导致坏道产生
  16. Intel NUC10 i7FNH寒霜峡谷购机安装winesxi
  17. awk sed 删除文件最后列及最后一个字符
  18. 第一章-问题求解策略-LA4234-Binary Clock
  19. 《计算机网络 自顶向下方法》读书笔记(三)
  20. 1076: 三位数求解 Python

热门文章

  1. PHP网上书店销售系统
  2. 此语言无法安装在此计算机上win7,win7系统无法安装英文语言包解决方法
  3. 用python自动办公 麻瓜_(视频教程)下载:麻瓜编程Python商业爬虫学徒计划python自动化办公麻瓜麻瓜编程...
  4. 基于SSM的网上购物商城管理系统
  5. 创建三维零件的DH坐标系
  6. 计算机英语潘雪峰,《小学三年级英语听力训练指导策略的研究》研究报告
  7. OV2640摄像头模块
  8. vscode下载与安装教程
  9. WIFI无线协议802.11a/b/g/n/ac的演变以及区别
  10. ANDROID cmake版本下载,android studio中为gradle指定cmake版本