반응형
1. 파일 다운로드
- DCMTK 3.6.6 Source Code
- dcmtk-3.6.6-win64-support-MD-iconv-msvc-15.8
- cmake-3.14.3-win64-x64.exe
2. CMake 진행
- Source Code와 Build Binaries 경로 설정
- Configure 클릭하여 컴파일러 버전(x64 / x86) 선택
- MT 옵션들을 MD 옵션으로 수정 (MT -> MD , MTd -> MDd)
- DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS 체크해제
- 출력 경로 지정
- Support 라이브러리 경로 지정
- DCMTK_ENABLE_STL_LIMITS 값 ON으로 설정
- 기타옵션들 설정
- Config 버튼 클릭후 경로 확인하여 지정되지 않은것은 수동으로 지정이 필요함
- dcmtk.lib, dcmtk.dll 로 하나의 라이브러리 파일로 만들고 싶을때는 아래 옵션 체크
- Open Project 클릭하여 VS 2019 실행
3. Visual Studio 2019에서 빌드
- 메뉴 Build - Batch Build 후 All_BUILD 체크 후 Buildd 클릭하여 빌드 진행
- 빌드 완료 후 INSTALL 프로젝트 선택하여 빌드
4. DCMTK 사용 예제
- 프로젝트 설정에 Include Directory , Library Directory 추가
- Include Directory : C:\Workspace\DCMTK\dcmtk-3.6.6-output\include
- Library Directory : C:\Workspace\DCMTK\dcmtk-3.6.6-output\lib
- Linker-Input-Additional Dependencies에 라이브러리 추가
- dcmtk 사용 샘플 소스
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
#include <iostream>
bool ReadPatientName(DcmFileFormat& fileformat, std::string& filePath)
{
OFCondition status = fileformat.loadFile(filePath.c_str());
if (!status.good())
{
std::cout << "Load Dimcom File Error: " << status.text() << std::endl;
return false;
}
OFString PatientName;
status = fileformat.getDataset()->findAndGetOFString(DCM_PatientName, PatientName);
if (status.good())
{
std::cout << "Get PatientName:" << PatientName << std::endl;
}
else
{
std::cout << "Get PatientName Error:" << status.text() << std::endl;
return false;
}
return true;
}
bool SavePatientName(DcmFileFormat& fileformat, std::string& filePath, const std::string& info)
{
OFCondition status = fileformat.getDataset()->putAndInsertString(DCM_PatientName, info.c_str());
if (status.good())
{
std::cout << "Save PatientName:" << info.c_str() << std::endl;
}
else
{
std::cout << "Save PatientName Error: " << status.text() << std::endl;
return false;
}
status = fileformat.saveFile(filePath.c_str());
if (!status.good())
{
std::cout << "Save Dimcom File Error: " << status.text() << std::endl;
return false;
}
return true;
}
int main()
{
DcmFileFormat dicomFileformat;
std::string dicomFile = "C:\\Workspace\\chestTest.dcm";
ReadPatientName(dicomFileformat, dicomFile);
SavePatientName(dicomFileformat, dicomFile, "John Snow");
ReadPatientName(dicomFileformat, dicomFile);
system("pause");
return 0;
}
* 참고
- cmake-GUI 가 실행되지 않거나 UI가 뜨지 않을경우 레지스트리 삭제
- Computer\HKEY_CURRENT_USER\Software\Kitware\CMakeSetup
반응형
'[====== Development ======] > DICOM' 카테고리의 다른 글
[DCMTK] JPEG 압축 (0) | 2022.06.10 |
---|---|
DICOM DOSE SR 관련 자료 (0) | 2021.09.24 |
DICOM UID 생성규칙 (0) | 2021.08.18 |
[DCMTK] Send DICOM (0) | 2021.07.29 |
[DCMTK] Simple StoreSCP (0) | 2021.07.29 |