首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Qt中使用Dcmtk?

如何在Qt中使用Dcmtk?
EN

Stack Overflow用户
提问于 2011-02-20 00:58:11
回答 4查看 10.1K关注 0票数 4

我正在做一个项目,在这个项目中,我必须阅读dicom图像。

我无法安装dcmtk。我使用的是64位win7和vs2010。

请解释在我的程序中包含dcmtk的过程。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-04 04:27:17

要使用Windows + DCMTK + QT,您需要执行以下步骤:

  • 编译DCMTK (步骤1.A)
  • 创建示例应用程序(步骤2)
  • 参考编译/安装的DCMTK库创建QT项目文件(步骤3.B)
  • 在集成开发环境中编译应用程序(步骤4.B)

如果你正在阅读这篇文章,并且不想使用Qt,我也会回答一个没有Qt的版本。

Windows+VisualStudio+DCMTK:步骤1.A23.A4.A

Linux+GCC+DCMTK:步骤1.B2N/A4.C

1)编译DCMTK

首先,要在应用程序中使用DCMTK库,您应该编译DCMTK源代码以生成库:

在我写这篇文章的时候,最后一个可用的版本是3.6.0。所以,我们应该下载它:

ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk360/dcmtk-3.6.0.zip

下载完成后,您需要解压缩文件夹。DCMTK源代码没有项目文件,但这不是问题,在您所需的操作系统/编译器中有一个CMakelist文件负责生成项目文件。如果您不熟悉CMake工具,可以在此处(https://cmake.org/)阅读更多内容

1.A)在Windows/Visual Studio 2012上编译

1.A.1)您需要安装编译器,在我的例子中,它是Visual Studio 2012

1.A.2)运行CMake tool以生成Visual Studio2012的项目文件。您需要能够填充source DCMTK目录。

1.A.3)现在,执行VisualStudio 2012,打开上一步(2)中创建的文件sln,编译目标ALL_BUILD

1.A.4)在Admin模式下重新执行DCMTK (因为有权限C:\Program Files)编译目标INSTALL (会将DCMTK复制安装到默认路径:C:/Program Files/DCMTK/,我们可以引用这样的PATH_WHERE_DCMTK_WAS_INSTALLED)

(1.B)在GNU/Linux上编译GCC

我已经在Ubuntu/CentOS上测试过了。首先,您应该转到DCMTK Source并运行以下三个命令:

代码语言:javascript
复制
$ ./configure --prefix=path_to_dcmtk
$ make all
$ sudo make install

示例: path_to_dcmtk = /home/user/dcmtk

2)创建示例应用程序

创建一个名为your_sample/testapp.cxx的文件,其中包含以下内容。这是一个在DCMTK论坛中发现的演示,可以打开DICOM文件并打印患者的姓名。

代码语言:javascript
复制
#include "dcmtk/dcmdata/dctk.h"
#include <iostream>
using namespace std;

int main()
{
   DcmFileFormat fileformat;
   OFCondition status = fileformat.loadFile("test.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;
}

3)使用VisuaStudio作为编译器创建应用程序项目

上一步创建的文件需要放在项目中。您可以在选项Windows VisualStudio (3.1)Windows Qt (3.2)之间选择。如果您使用的是Linux,则可以跳过此步骤。

3.A)安装了Visual Studio 2012 IDE的Windows

要创建一个Visual Studio项目,您可以使用Wizard并设置必要的设置,例如:LinkerLibraries等。但是,为了使回答更简单,我将使用CMakeList.txt为Visual Studio2012创建一个项目。因此,请创建一个名为your_sample/CmakeList.txt的文件,其中包含以下内容:

代码语言:javascript
复制
PROJECT(testapp)

SET(DCMTK_DIR ABSOLUTE_PATH_WHERE_DCMTK_WAS_INSTALLED)
#an example: SET(DCMTK_DIR "C:\\Users\\test\\test_dcmtk\\DCMTK")

# settings for Microsoft Visual C++ 6
SET(CMAKE_C_FLAGS "/nologo /W3 /GX /Gy /YX")
SET(CMAKE_C_FLAGS_DEBUG "/MTd /Z7 /Od")
SET(CMAKE_C_FLAGS_RELEASE "/MT /O2")
SET(CMAKE_CXX_FLAGS "/nologo /W3 /GX /Gy /YX")
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od")
SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2")

ADD_DEFINITIONS(-D_REENTRANT)

INCLUDE_DIRECTORIES(${DCMTK_DIR}/include)
LINK_DIRECTORIES(${DCMTK_DIR}/lib)

ADD_EXECUTABLE(testapp testapp)
TARGET_LINK_LIBRARIES(testapp netapi32 wsock32 ofstd dcmdata)

3.B)使用VisuaStudio作为编译器的Windows QtCreator集成开发环境

若要为QtCreator集成开发环境创建项目文件,请执行以下操作。您需要创建一个名为your_sample/my_project.pro的文件,其中包含以下内容:

代码语言:javascript
复制
SOURCES += testapp.cxx
CONFIG += debug console
DEFINES += _REENTRANT

QMAKE_CFLAGS_RELEASE -= -MD
QMAKE_CFLAGS_RELEASE = -MT
QMAKE_CFLAGS_DEBUG -= -MDd
QMAKE_CFLAGS_DEBUG = -MTd
QMAKE_CXXFLAGS_RELEASE -= -MD
QMAKE_CXXFLAGS_RELEASE += -MT
QMAKE_CXXFLAGS_DEBUG -= -MDd
QMAKE_CXXFLAGS_DEBUG += -MTd

INCLUDEPATH += (RELATIVE_PATH_WHERE_DCMTK_WAS_INSTALLED)/include
#an example: INCLUDEPATH += ../../../test_dcmtk/DCMTK/include

LIBS += -L"(RELATIVE_PATH_WHERE_YOU_INSTALLED_DCMTK)/lib" \
-ladvapi32 \
-ldcmdata \
-loflog \
-lofstd \
-lws2_32 \
-lnetapi32 \
-lwsock32
#an example: LIBS += -L"../../../test_dcmtk/DCMTK/lib" \

4.A)安装了Visual Studio 2012 IDE的Windows

VisualStudio上打开项目文件,然后单击Build

4.B)使用VisuaStudio作为编译器的带有QtCreator集成开发环境的Windows

QT上打开项目文件,然后单击Build

4.C) GNU/Linux -带GCC的命令行

代码语言:javascript
复制
g++ testapp.cxx -DHAVE_CONFIG_H -I/path_to_dcmtk/include -L/path_to_dcmtk/lib -pthread -ldcmdata -lz -loflog -lofstd -o main

请注意,无论您是否在DEBUG模式下编译库,您的应用程序也应该在DEBUG模式下编译。

参考文献

如何安装http://support.dcmtk.org/docs/file_install.html

  • DCMTK文档http://support.dcmtk.org/docs/

MSVC:如何在我自己的应用程序中使用

  • 库?

  • CMake Configuration http://support.dcmtk.org/wiki/dcmtk/howto/cmakeconfiguration360
票数 18
EN

Stack Overflow用户

发布于 2011-02-20 15:31:36

尝试按照Dcmtk installation的说明进行操作。如果您不知道如何在项目中包含该库,请研究qmake manual

票数 2
EN

Stack Overflow用户

发布于 2011-04-22 11:51:22

通用工具包团队已经解决了其中的一些问题。您还可以使用Insight工具包

http://www.commontk.org/index.php/Main_Page

http://itk.org

事实上,在ITK wiki上有一些文档,但是ITK使用gdcm而不是dcmtk。

http://www.itk.org/Wiki/ITK_FAQ#How_to_read_a_volume_from_a_DICOM_series

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5052148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档