作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究一个必须读取 dicom 图像的项目。
我无法安装 dcmtk。我使用的是 win7 64 位和 vs2010。
请解释在我的程序中包含 dcmtk 的过程。
最佳答案
使用 Windows
+ DCMTK
+ QT
,您需要执行以下步骤:
If you are reading this and don't want to use the Qt, I am answering a version without Qt as well.
Windows+VisualStudio+DCMTK: Steps
1.A
,2
,3.A
and4.A
Linux+GCC+DCMTK: Steps
1.B
,2
,N/A
,4.C
CMake tool
生成项目文件到Visual Studio 2012。你需要能够填写
source
DCMTK 目录。
sln
在上一步(2)中创建并编译目标
ALL_BUILD
1.A.4) 在
Admin
中重新执行 VisualStudio模式(由于权限
C:\Program Files
)编译目标
INSTALL
(它会将 DCMTK 复制并安装到默认路径:
C:/Program Files/DCMTK/
,我们可以引用它,例如
PATH_WHERE_DCMTK_WAS_INSTALLED )
DCMTK Source
并运行以下三个命令:
$ ./configure --prefix=path_to_dcmtk
$ make all
$ sudo make install
示例:path_to_dcmtk =/home/user/dcmtk
your_sample/testapp.cxx
的文件有以下内容。这是在 DCMTK 论坛中找到的演示,用于打开 DICOM 文件并打印患者姓名。
#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;
}
Windows VisualStudio (3.1)
之间进行选择和
Windows Qt (3.2)
.如果您使用的是 Linux,则可以跳过此步骤。
Wizard
并设置必要的设置,例如:
Linker
,
Libraries
等。但是,为了使这个答案更容易,我将使用
CMakeList.txt
为 Visual Studio 2012 创建一个项目。因此,请创建一个名为
your_sample/CmakeList.txt
的文件。具有以下内容:
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 IDE
your_sample/my_project.pro
的文件。具有以下内容:
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" \
VisualStudio
打开项目文件然后点击
Build
.
QT
打开项目文件然后点击
Build
.
g++ testapp.cxx -DHAVE_CONFIG_H -I/path_to_dcmtk/include -L/path_to_dcmtk/lib -pthread -ldcmdata -lz -loflog -lofstd -o main
Please, note that whether you have compiled the libraries in
DEBUG
mode, your application should be compiled inDEBUG
mode as well.
关于qt - 如何在 Qt 中使用 Dcmtk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052148/
我是一名优秀的程序员,十分优秀!