VS2017+Qt5.14.2+CMake3.19.2+DCMTK3.6.6

1 篇文章 0 订阅

DCMTK简介:

       由于现在的医学影像设备的图像存储和传输正在逐渐向DICOM标准靠拢,在我们进行医学图像处理的过程中,经常需要自己编写和DICOM格式的图像相关的各种程序模块,以完成自己处理功能。如果从头开始理解DICOM的协议,然后完全自己编写这些代码来实现这些协议,是一件工程浩大的事情。德国offis公司开发的DCMTK,为我们提供了实现DICOM协议的一个平台,使得我们可以在它的基础上轻松的完成自己的主要工作,而不必把太多的精力放在实现DICOM协议的细节问题上。本文以WINDOWSXP+VC6.0为开发平台,从DCMTK的下载、调试、使用等方面介绍基于DCMTK的DICOM相关程序编写过程。
       这个开发包经过10多年的开发和维护,已经基本实现了DICOM协议的所有内容。该开发包提供所有的源代码、支持库和帮助文档。DCMTK提供了在各种操作系统下使用的可能版本,如LINUX、SUN、MACOS、WINDOWS等,用户可根据自己的开发平台进行编译。

直接下载编译好的资源包

一、安装包下载:

连接网址:http://www.dcmtk.org/dcmtk.php.en

1.下载源文件包如下:(随便选择一个下载)
在这里插入图片描述
2.下载帮助文档:
在这里插入图片描述
3.选择对应的依赖库:
在这里插入图片描述

二、使用CMake编译:

1.打开CMake工具:
在这里插入图片描述

2.执行configure:(为了确保无误,选择Visual Studio 15 2017 和 X64)

在这里插入图片描述

3.Finish,等待第一次编译成功:

修改配置如下:
1)勾选共享库:
在这里插入图片描述
2).确保为MD

        /MD和/MDd表示采用多线程CRT库的动态dll版本,会使应用程序使用运行时库特定版本的多线程DLL。链接时将按照传统VC链接dll的方式将运行时库MSVCRxx.DLL的导入库MSVCRT.lib链接,在运行时要求安装了相应版本的VC运行时库可再发行组件包(当然把这些运行时库dll放在应用程序目录下也是可以的)。
        因/MD和/MDd方式不会将运行时库链接到可执行文件内部,可有效减少可执行文件尺寸。当多项目以MD方式运作时,其内部会采用同一个堆,内存管理将被简化,跨模块内存管理问题也能得到缓解。
        结论:/MD和/MDd将是潮流所趋,/ML和/MLd方式请及时放弃,/MT和/MTd在非必要时最好也不要采用了。
       /MD 与 /MT 用于Release版本,前者表示链接时,不链接VC的运行时库(msvcrt.lib),而采用动态(msvcrtXX.dll,其中XX表示使用的版本);相应地,后者则表示静态链接VC的运行时库,这样的结果是链接生成的的目标模块体积明显比前者要大一些。
       /MTD与/MDD 用于Debug版本,其它规则同上。

在这里插入图片描述
3).选择VS2017 INSTALL时生成的文件路径(之后配置中会用到的DCMTK_INSTALL_PATH):
在这里插入图片描述
4).一定要取消该勾选,我们用的为x64位,以免出错
在这里插入图片描述
5).添加以下勾选,为后面编译依赖连接库做准备
在这里插入图片描述
6).配置依赖库文件(该路径均为我们下载的依赖文件)
在这里插入图片描述

在这里插入图片描述

4.下一步:执行Generate,点击Open Project:

在这里插入图片描述
5.查看VS2017配置情况:
在这里插入图片描述

6.下一步:点击生成->批生成

在这里插入图片描述
7.下一步:等待生成成功,执行INSTALL
在这里插入图片描述
8.漫长的等待,生成如下文件夹:
在这里插入图片描述

三、测试:

1.创建一个新项目,加入如下代码进行测试:

#include "dcmtk/dcmdata/dctk.h"
#include <iostream>

using namespace std;

int main()
{
    DcmFileFormat fileformat;
    OFCondition status = fileformat.loadFile("E:/Qt_project/test/123.dcm");
    if (status.good())
    {
        OFString patientsName;
        if (fileformat.getDataset()->findAndGetOFString(DCM_PatientName, patientsName).good())
        {
            cout << "Patient's Name: " << patientsName << endl;
        }else{
            cerr << "Error: cannot access Patient's Name!" << endl;
        }
    }else{
        cerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;
    }

    return 0;
}

2.配置文件添加库文件(.pro文件):

INCLUDEPATH += DCMTK_INSTALL_PATH\include
#an example: INCLUDEPATH += D:\DCMTK\dcmtk-install\include

LIBS += DCMTK_INSTALL_PATH\lib\*
#an example: LIBS += D:\DCMTK\dcmtk-install\lib\*

3.添加动态库到DEbug文件夹下面(如果没有这一步在编译时能通过,但是在运行时无法正常运行):

将DCMTK_INSTALL_PATH/bin路径下面所有.dll动态库文件拷贝到Qt build生成的debug(release)文件夹下面
在这里插入图片描述

4.运行QT程序:
在这里插入图片描述

至此环境搭建完成!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值