摘要:本文背景,学习利用opencv库打开dicom医学影像文件。内容主要为,学习过程中对vs配置opencv和dcmtk环境做出总结。
附:
http://jingyan.baidu.com/article/75ab0bcbee4b47d6864db2fc.html ——百度经验 VS2013配置opencv2.4.9
http://qimo601.iteye.com/blog/1685135 ——qimo601 博客 DCMTK3.6.1安装说明
http://blog.csdn.net/m_buddy/article/details/51882584 ——m_buddy 博客 利用DCMTK读取DCM图像像素数据(快捷配置dcmtk)
在配置opencv环境时,最常见的步骤即为:1、安装opencv库至某一指定文件夹下 2、添加系统的环境变量 3、创建win32控制台工程 4、项目属性中添加各种“目录”和“依赖项” 5、利用程序测试。
而在配置dcmtk环境时,步骤为:1、安装dcmtk库至某一指定文件夹下 2、cmake编译 3、VS编译 4、创建win32控制台工程 5、项目属性中添加各种“目录”和“依赖项” 6、利用程序测试。
无论是opencv库还是dcmtk库,亦或是其他c++库,实质上只是一个可添加的“函数包”——一个包含动态链接库、头文件和其他一些文件的文件夹。函数包中有着一整类的相关函数和类的定义,当配置环境成功后,便可以直接调用这些函数或者类。opencv库一般是已经处理好的一个函数包,而对于dcmtk库却不是一个处理好的文件夹,所以需要经过预处理(即cmake和VS两次编译)得到最后的函数包。dcmtk的两次编译对于小白(比如我)不是一个简单活,所以我从m_buddy的博客中直接下载了最终文件,用m_buddy的方法配置了该环境。对于函数包的存放位置并没有固定要求,因为采用的是VS动态连接的方式,只要有意识的摆放在一个地方就好。
安装完库文件后,添加系统的环境变量,那么什么是系统的环境变量?
(环境变量——百度百科)
环境变量相当于给系统或用户应用程序设置的一些参数,具体起什么作用这当然和具体的环境变量相关。比如path,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找;再如tc或vc++中,set include=path1;path2; 是告诉编译程序到哪里去找.h类型的文件;当然不仅仅是指定什么路径,还有其它的作用的。
在VS配置环境时,环境变量起的主要作用就是给一个路径。如下图:
截图取自 项目-》属性-》配置属性-》VC++目录-》可执行文件目录 中的继承的值
显然在该目录下,可以通过添加 “环境变量“名来替代具体的某个路径,或路径的前段部分。在本文所附的百度经验中,虽然添加了环境变量,但添加目录时却没有用到,该步骤是可以省略的。但在其他经验博文中,有的是利用了环境变量的,此时便不可省略。
配置库时,需要添加目录和依赖项。常用的办法是新建win32控制台,然后选择 项目-》属性-》配置属性-》VC++目录 在常规项里有如下目录:
其中”可执行目录“(bin文件夹)包含.exe文件、”包含目录“(include文件夹)包含.h文件、"库目录"(lib文件夹)包含.lib文件。常用库一般是添加该三类目录即可,少部分可能添加其余目录。除了目录的路径,还需要添加动态链接库的文件名,重新选择 配置属性-》链接器-》输入 其中有着”附加依赖项“,向里面添加”新添加的库目录”下的所有lib文件,分行写。
(ps:为了库的完整使用,lib文件要写全,为了程序的运行成功,一定不能多写莫须有的文件名,因为VS会逐个文件找寻,找到了才能继续编译)
至此算配置结束,最后编写小程序尝试调用库内容,以确定配置成功。(教程中一般都会附上代码,这里就不加了)
在win32控制台的项目属性中配置成功,那么为什么在新建其他项目时也可以使用呢?
每个项目都有“项目属性”这个菜单,除此,在 视图-》属性管理器 中我们可以看到 Debug|Win32 下有“Microsoft.Cpp.Win32.user”“Application”“Unicode Support”“Dynamic Link To MFC”共计四个基础属性表(MFC工程下),而“项目属性”即是其中的“Microsoft.Cpp.Win32.user”属性表,也是用户自己的属性设置表,我们创建的每一个工程项目都会包含这个属性表,所以我们在新建win32控制台工程中的属性设置,在之后新建的其他项目我们也是可以使用的。(Release|Win32下与Debug|Win32下的属性表基本相同,除非用户只针对其一进行设置和修改)
那如果我们新建其他工程并不需要此次的配置环境呢?
显而易见的一种方式,通过“项目属性”将目录等均删除即可。
每次均修改属性表内容是件繁琐事,因此,我们大可不必修改“Microsoft.Cpp.Win32.user”的属性,而是在其中新建一个属性表,命名后,右键”属性“,接着和上文描述相同,添加目录和依赖项即可。将属性表保存在一个固定的位置,当新建其他项目时,可在”属性管理器“中添加已有属性表,这样新建的工程便可以快速的配置上环境了。(属性表可通过VS中属性界面添加,亦可手动创建文件,书写内容,后通过”添加已有属性表“添加)
https://www.zhihu.com/question/24400428 知乎 关于永久配置opencv(其中有属性表的写法,若手动创建可参考)