dcmtk医学图像处理教程(一)环境配置VS2019+dcmtk3.6.6_行走-程序员ITS304

技术标签: 医学  c++  医学影像处理  新星计划  dcmtk  教程  

开发环境:

ubuntu vue-router vuex

0 前言

使用c++做医学图像的处理任务,离不开dcmtk这个库,包括itk-snap在内的众多开源软件都使用该库进行开发,如果你还为使用什么库而纠结,建议直接使用dcmtk开整,肯定不会让你失望的。

为什么使用visual studio?

首先我们下载的是dcmtk库的源代码,需要在我们自己的机器 上将dcmtk 编译为我们所需要的动态库,因此需要visual studio做这个工作。当编译生成好了我们所需要的dcmtk头文件以及库文件之后,其实可以使用其他的ide比如qtClion来进行下一步的开发,不过在本文安装好环境之后,仍然使用visual studio来进行代码验证。
PS: vs2017以及vs2019均可进行下载。

如何安装?

bilibili已经有很好 的视频教程了。不过视频教程有一些瑕疵,建议读者打开该视频,一步步操作,同时,在每一步的操作过程中,查看本文所描述的操作成功后会显示的结果,决定是否进行下一步,或者在本步骤debug。
C+±CMake-Dcmtk视频环境配置教程

其他一些可参考资料,实在觉得本文无法满足需求,可以查看

视频作者的英文版文字教程

视频作者的中文版文字教程

不错的vs2017环境配置教程

官方的安装教程,我猜你点开就不想看了,相信我

Tips:1.在看视频过程中,先整体浏览一遍,有一些视频讲错了,回退了一下操作。这些地方要注意。2.视频版不好回退,建议使用文字版

1 下载dcmtk源代码

dcmtk下载链接
在这里插入图片描述
在这里插入图片描述

我最终下载的支持库文件名字为dcmtk-3.6.6-win64-support-MD-iconv-msvc-15.8.zip

1.2 下载文件时不同参数的比较

首先选择MD或者MDd的,因为动态库是潮流,mt是构建静态库,代码会很大。
关于字符集,选择icu64是很庞大繁琐的库,libiconv可以轻松用于windows。

字符集比较

字符集使用范围比较

dcmtk在windows安装,开篇提到了md和mt的区别

2 CMake构建

注意:CMake版本一定一定要小于3.19.0,建议选择3.14.3,如果你的版本很新,去卸载重装!不会超过15分钟的。
3.14下载链接

点两次configure,一次generate。

2.1 configure(10分钟)

跟随视频教程

可能的错误(没有可不看)

CMake Deprecation Warning at CMakeLists.txt:2 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

cmakelists.txt中把最低要求的CMake版本修改了一下,没有红色错误了。
可能是代码中设置的最低版本是2.8.12,太旧了。只是一个警告,不影响运行。具体内容看:https://cmake.org/cmake/help/latest/release/3.19.html#deprecated-and-removed-features
在这里插入图片描述

2.2 第二次configure

结果如下:
在这里插入图片描述
其中写的很多标准库用不了,正常现象,这是dcmtk提供的。我们不用它的库,使用编译器自带的STL即可。

2.3 generate

跟随视频教程

可能的错误(没有就不用看)

CMake Warning (dev) at CMake/dcmtkMacros.cmake:82 (add_library):
  Policy CMP0115 is not set: Source file extensions must be explicit.  Run
  "cmake --help-policy CMP0115" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  File:

    D:/Programs/dcmtk-3.6.6/ofstd/libsrc/ofchrenc.cc
Call Stack (most recent call first):
  ofstd/libsrc/CMakeLists.txt:2 (DCMTK_ADD_LIBRARY)
This warning is for project developers.  Use -Wno-dev to suppress it.

cmake_policy(SET CMP0115 OLD)没有用。
使用下载3.20版本,安装3.14版本,成功解决问题。!15分钟内解决。

3 VS生成dcmtk的头文件和库

生成过程很长,半小时以上。我的台式机都用了很长时间。

总共有97(不同版本不一样,图片显示204)个项目,要编译链接97次,任何一次错了都不行。正确结果如下(如果之前CMake中出现红色错误,这一步肯定不会成功!):
在这里插入图片描述

可能的错误

都是一模一样的错误,是因为使用了较新的CMake版本的原因。CMake不应该出现任何一行红色。

严重性	代码	说明	项目	文件	行	禁止显示状态

错误	C1083	无法打开包括文件: “unicode/ucnv.h”: No such file or directory	ofstd	D:\Programs\dcmtk-3.6.6\ofstd\libsrc\ofchrenc.cc	67	

错误	LNK1104	无法打开文件“..\..\lib\Debug\ofstd.lib”	oflog	D:\Programs\dcmtksolution\oflog\libsrc\LINK	1	

4 验证安装效果

使用vs打开工程,进行一些配置,如下是省得手打的部分配置,可以直接复制进去。

iphlpapi.lib
ws2_32.lib
wsock32.lib
netapi32.lib
ofstd.lib
oflog.lib
dcmdata.lib
zlib_d.lib

注意:当你给自己的代码工程配置库文件以及头文件路径的时候,一定要注意是debug还是release文件,如果配置错了,你就会看到找不到dcmtk的头文件的错误!也就是下面那里要注意:
在这里插入图片描述

代码下载

如果你是vs2019,可以直接点击github链接(里面包含了需要的dicom文件以及代码),下载并双击sln文件,注意要把我工程中的库文件和头文件目录修改为你的!

运行结果如下则正确!
在这里插入图片描述

开源的dicom文件下载

左下角dicom samples导出dicom文件

5 教程

本人正确编写dicom教程,欢迎同好一起交流。强烈建议一起参与github仓库

2010年的远古教程

或者你也可以关注我的微信公众号:三丰杂货铺
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42089190/article/details/117440207

智能推荐

智慧水务RTU 水利遥测终端_jixunwulian的博客-程序员ITS304

计讯物联智慧水务RTU TY910,网关型水利RTU,支持视频图像采集,数据主动上报,符合智慧水务相关协议规约,全网通4G网络,支持数据叠加,支持断电断网后数据续传,实现本地存储,数据导出、实时上报、远程查询、遥信、遥控等功能。智慧水务RTU功能1、遵循行业规约,广泛应用,支持国家《水文监测数据通信规约》(ASCII和HEX全项)、《水资源监测数据传输规约》和其他省市特殊规约、SL180-2015水文自动测报系统设备遥测终端机。2、通信方式多样不受限,支持WAN/LAN、ADSL、GPRS、 4G、

JDBC学习_無言46的博客-程序员ITS304

JDBC学习这里写目录标题JDBC学习一级目录二级目录三级目录一、JDBC开发的六个步骤二、SQL注入问题(Statement与preparement)1、Statement 的sql注入问题2、使用PrepareStatement解决sql注入问题三、ORM对象关系映射四、JDBC工具类1、数据源写到dp.properties文件中2、工具类的封装五、三层架构六、JDBC事务处理转账问题1、DAO层(实现数据库信息的查询,更新等)Accout : 实体类AccountDAO : 实体类操作数据库的接口,

uni-app笔记---HbuilderX快捷键_郎lang郎的博客-程序员ITS304_uniapp全局搜索快捷键

几个常用的记录一下vbase:生成一段基本的vue代码结构viewfor:生成一段带有v-for循环结构的视图代码块常用js代码块iff:简单if forr:for循环结构体 fori:for循环结构体并包含i funn:函数 funa:匿名函数 rt:return true clog:输出:"console.log()" clogvar:增强的日志输出,...

SL651-2014 《水文监测数据通信规约》 中心站查询遥测站实时数据详解_A__wood的博客-程序员ITS304_水文监测数据通信规约

 SL651-2014 《水文监测数据通信规约》中心站查询遥测站实时数据详解全国水文标准化技术委员会水文仪器分技术委员会为适应我国水文仪器标准化工作的迅速发展,对用来监测河流、水库等水情的水文遥测终端RTU的数据通信制定了SL651-2014《水文监测数据通信规约》,本文将以蓝普lanpu-1802型水文遥测终端RTU为例,详细介绍SL651-2014《水文监测数据通信规约》要求的,中心站查询遥测...

Seasar的ORM框架Doma学习笔记系列1——安装设置_死鸡的博客-程序员ITS304_doma框架

官方网站:http://doma.seasar.org/index.htmlDoma的一大优势是完全实现了代码跟sql文件的分离。1. 安装设置 1)doma要求JDK1.6以上的JDBC。 2)把doma-x.x.x.jar包导入工程。 3)注解处理设定    工程属性,【Java Compiler】 - 【Annotation Processing】里,

这可能是目前最全的!这些细节在Java面试上要注意了_普通网友的博客-程序员ITS304

前言提到IT人员,人们的第一印象就是高薪资,包括转行来学Java的人绝大多数都是冲着高薪以及就业广泛来的。前段时间跟同学聊天,她说她老公在一家互联网公司做Java后台开发,年薪四十万,最近在准备复习,想着明年冲一波阿里p6或者p7。很多人都听过阿里的p级职位层级,那今天就跟大家“揭秘”一下,想要成为p7岗的Java技术专家你需要掌握哪些技术。本篇文章我将分成三个内容来讲:①了解阿里p级职位,大厂岗位薪资(2020)②阿里p7技术专家水平(Java岗)③如何让自己一步步贴近p7技术专家分享第

随便推点

C编程经验_YoungHonker的博客-程序员ITS304

①、全局变量用具有描述意义的名字,局部变量用短名字。函数采用动作性的名字。保持一致性。②、缩进形式显示程序结构,使用一致的缩行和加括号风格。使用空行显示模块③、充分而合理地使用程序注释 给函数和全局数据加注释。不要注释不好的代码,应该重写。不要与代码矛盾。④友好的程序界面,程序界面的方便性及有效性⑤不要滥用语言技巧 使用表达式的自然形式。利用括号排除歧义。分解复杂的表达式。当心副作

推荐资源地址_weixin_34235135的博客-程序员ITS304

http://51ctodown.blog.51cto.com/948211/547721 转载于:https://blog.51cto.com/bavol214/890648

云计算基本概念_visionarywind的博客-程序员ITS304_云计算的基本概念

云计算是一种利用互联网实现随时随地、按需便捷地访问共享资源(如计算设施、存储设备、应用程序等)的计算模式。      云计算的核心概念是计算机资源服务化。云计算将互联网转化成一个可以满足各种需求的应用和服务的交付平台,面向服务架构将计算资源抽象为服务,为云计算提供计算服务能力,虚拟化赋予云计算用于构建各种应用系统时必要的可定制的、灵活的硬件资源。一、云计算的定义      云计算是一种

A Simple Math Problem (莫比乌斯函数反演)_yezzz.的博客-程序员ITS304

A Simple Math Problem分析:莫比乌斯函数反演∑i=1n∑j=1i[gcd(i,j)==1]f(j)=∑j=1n∑i=jnf(j)∑d∣(i,j)u(d)=∑d=1n∑j=1[nd]∑i=j[nd]f(j∗d)∗u[d]=∑d=1nu(d)∑j=1[nd]f(j∗d)∑i=j[nd]1=∑d=1nu(d)∑j=1[nd]f(j∗d)∗([nd]−j+1)\begin{aligned}&amp;\sum_{i=1}^n\sum_{j=1}^i[gcd(i,j)==1]f(j).

java版飞机大战小游戏详细教程(零基础小白也可以分分钟学会!!!)_胖胖的懒羊羊的博客-程序员ITS304_java飞机大战教程

目录一:游戏展示二:游戏教程1.View视图层1.1制作游戏面板类1.2.制作游戏内容显示类2.enetiy实体层2.1游戏实体抽象类2.2战机类2.3敌机类2.4战机不断出现类3.controller控制飞机移动层3.1PlaneController类4.utils工具层4.1飞机常量类4.2加载图片类5.run启动层5.1游戏启动类三:游戏源码一:游戏展示飞机大战小游戏我们都玩过,通过移动飞机来打敌机,这里给大家展示一下游戏成果:呜呜呜由于gif只能上传5M大小,所以就不能给大家展示操作了,如果大

EXT4.0 (4~9章)学习资料_clever027的博客-程序员ITS304

第四章 MVC学习 从这个图中我们可以很清楚的看到M 、V、C在ExtJS4.0里面所对应数据类型。 靠右边是对应的代码结构。 下描述一下这model、store、view、controller以及application这几者之间的关系。(1)application:它是MVC的入口,用来告诉ExtJS到那里去找对应js文件以及启动加载controlle

推荐文章

热门文章

相关标签