Я работаю над проектом, в котором мне нужно прочитать изображение dicom.
Я не могу установить dcmtk. Я использую Win7 64-бит и vs2010.
Пожалуйста, объясните процедуру включения dcmtk в мою программу.
Я работаю над проектом, в котором мне нужно прочитать изображение dicom.
Я не могу установить dcmtk. Я использую Win7 64-бит и vs2010.
Пожалуйста, объясните процедуру включения dcmtk в мою программу.
Чтобы использовать Windows
+ DCMTK
+ QT
, вам необходимо выполнить следующие шаги:
Если вы читаете это и не хотите использовать Qt, я также отвечаю на версию без Qt.
Windows+VisualStudio+DCMTK: шаги
1.A
,2
,3.A
и4.A
Linux+GCC+DCMTK: шаги
1.B
,2
,N/A
,4.C
Прежде всего, чтобы использовать библиотеку 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.А.1) У вас должен быть установлен компилятор, в моем случае это был Visual Studio 2012
1.A.2) Запустите CMake tool
, чтобы сгенерировать файл проекта для Visual Studio 2012. Вам необходимо заполнить каталог source
DCMTK.
1.A.3) Теперь запустите VisualStudio 2012, откройте файл sln
, созданный на предыдущем шаге (2), и скомпилируйте цель ALL_BUILD
1.A.4) Повторно запустите VisualStudio в режиме Admin
(из-за разрешения C:\Program Files
) для компиляции целевого INSTALL
(он скопирует и установит DCMTK по пути по умолчанию: C:/Program Files/DCMTK/
, мы можем сослаться на него так: PATH_WHERE_DCMTK_WAS_INSTALLED >)
Я тестировал в Ubuntu/CentOS. Во-первых, вы должны перейти к 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, вы можете пропустить этот шаг.
Чтобы создать проект Visual Studio, вы можете использовать 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)
Чтобы создать файл проекта для 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
Обратите внимание, что если вы скомпилировали библиотеки в режиме
DEBUG
, ваше приложение также должно быть скомпилировано в режимеDEBUG
.
Как установить http://support.dcmtk.org/docs/file_install.html
Документы DCMTK http://support.dcmtk.org/docs/
Часто задаваемые вопросы № 40: Как мне использовать библиотеки DCMTK в моем собственном приложении? [MSVC] http://forum.dcmtk.org/viewtopic.php?f=4&t=652
Конфигурация CMake http://support.dcmtk.org/wiki/dcmtk/howto/cmakeconfiguration360 а>
.sln
(файл проекта Visual Studio) с помощью CMAKE.exe или CMake-GUI.
- person well; 27.05.2017
oflog iphlpapi ws2_32
- person edtech; 22.12.2017
Попробуйте следовать инструкциям по установке Dcmtk. Если вы не знаете, как включить библиотеку в свой проект, изучите руководство по qmake. а>.
Ребята из Common Toolkit решили некоторые из этих проблем. Вы также можете использовать Insight Toolkit
http://www.commontk.org/index.php/Main_Page
На самом деле в вики ITK есть немного документации, но ITK использует gdcm вместо dcmtk.
http://www.itk.org/Wiki/ITK_FAQ#How_to_read_a_volume_from_a_DICOM_series
У нас есть проект, представляющий собой реализацию DCMTk в Qt — мы называем его QtDICOM, и он составляет основу многих наших продуктов (http://fluxinc.ca/medical)/. Стоит посмотреть (https://bitbucket.org/fluxinc/qt-dicom). Мы не особенно хорошо задокументировали конфигурацию, но вы, вероятно, сможете понять это, если посмотрите.
Примечание. Это зависит от сборки и включения DCMTk в различные пути.