医学图像处理入门:VS2019+DCMTK3.6.8编译及环境配置

1. 下载DCMTK的源文件包和支持库

  首先下载dcmtk软件包,此处我们下载源码和支持库来进行自己编译。下载网址:
https://dicom.offis.de/en/dcmtk/dcmtk-software-development/

如图所示,选择合适的版本进行下载,此处采用VS2019进行编译。

在这里插入图片描述

在这里插入图片描述

2. 解压文件包和支持库

  对下载的dcmtk软件包和支持库进行解压。
在这里插入图片描述
在这里插入图片描述
  在dcmtk软件包中新建build和sdk文件夹,以便后续进行cmake编译。

在这里插入图片描述

3. cmake配置

  下面对cmake进行配置,选择合适的路径文件夹以后,参照图中选项进行配置设置。

在这里插入图片描述

取消勾选DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
此处用到了下载的二进制支持包文件。
在这里插入图片描述

点击config按钮,等待完成后,再点击Generate按钮生成VS工程项目。在这里插入图片描述

4.编译DCMTK库

  点击Open project 按钮打开VS项目工程,然后先选择 ALL_BUILD进行生成,随后选择INSTALL进行sdk整理。
如果遇到“文件中有常量”的错误提醒,可以用记事本打开对应的.cc文件,另存为“utf8-BOM”格式即可,毕竟这是VS支持的文件格式。

在这里插入图片描述

在这里插入图片描述

编译完成后,生成下面的SDK包。

在这里插入图片描述

5.示例项目

  下面我们验证一下编译的SDK包是否可用。

5.1 下载Dicom示例文件

  先下载所需要的Dicom文件,下载网址:https://www.dicomlibrary.com/,
在左侧DICOM Samlples任意选择一个图片进去,然后点击上面的Export——Download按钮。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对下载的文件进行解压后,如下所示:

在这里插入图片描述

5.2 创建vs项目并进行属性设置

  新建一个VS控制台程序,然后进行sdk设置:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
依赖项:

iphlpapi.lib
ws2_32.lib
wsock32.lib
netapi32.lib
ofstd.lib
oflog.lib
dcmdata.lib
zlib_d.lib

5.3 运行效果

编译生成后如下,把需要的几个dll拷贝过来。

在这里插入图片描述

在这里插入图片描述

5.4 源码

// DCMTKTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>#include <dcmtk/config/osconfig.h>
#include <dcmtk/dcmdata/dctk.h>//读DICOM文件中的病人名
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 << "Read PatientName:" << PatientName << std::endl;}else{std::cout << "Read PatientName Error:" << status.text() << std::endl;return false;}return true;
}//修改保存DICOM文件中的病人名
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 = "F:\\Qt_vtk_itk\\series-00000\\image-00000.dcm";ReadPatientName(dicomFileformat, dicomFile); //读写病人的名称SavePatientName(dicomFileformat, dicomFile, "Lebron Wade"); //改写病人的名称为John SnowReadPatientName(dicomFileformat, dicomFile);system("pause");return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1560010.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

5款人声分离免费软件分享,从入门到精通,伴奏提取分分钟拿捏!

人声分离通常是音乐制作、混音和卡拉OK中常用的重要技术之一。它的核心是将乐器伴奏从原始音轨中分离出来&#xff0c;使得用户可以单独处理或重混音频&#xff0c;创造出清晰干净的伴奏轨道。若缺乏强大的音频剪辑软件或专业人声分离工具&#xff0c;这一过程往往会比较困难。…

Xinstall品牌揭秘:如何成为App拉新的行业翘楚?

在移动互联网时代&#xff0c;App作为连接用户与服务的桥梁&#xff0c;其重要性不言而喻。然而&#xff0c;随着市场竞争的加剧&#xff0c;App拉新&#xff08;即吸引新用户下载并使用App&#xff09;的难度也在逐渐增大。传统的营销方式往往面临着成本高、效率低、用户留存差…

前端开发攻略---分块加载大数据

一、问题 解决当遇到较大的数据请求&#xff0c;当用户网络较差的时候&#xff0c;需要等很久很久才能拿到服务器的响应结果&#xff0c;如果这个响应结果需要再页面上展示的话&#xff0c;会导致页面长时间白屏的问题 二、实现原理 当发送一个请求时&#xff0c;需要等服务器把…

照片相册SDK解决方案,模板化包装,简化视频制作流程

专业的视频制作往往门槛较高&#xff0c;让许多用户望而却步&#xff0c;美摄科技推出了全新的照片相册SDK解决方案&#xff0c;旨在通过模板化包装方式&#xff0c;让用户轻松上传照片&#xff0c;快速生成一个充满创意和个性化的照片视频&#xff0c;让每个人都能成为自己生活…

Java的TCP通信

Java的TCP通信 TCP发送数据 Java中的TCP通信 Java对基于TCP协议的的网络提供了良好的封装&#xff0c;使用Socket对象来代表两端的通信端口&#xff0c;并通过Socket产生IO流来进行网络通信。Java为客户端提供了Socket类&#xff0c;为服务器端提供了ServerSocket类 构造方法…

使用 Go 语言与 Elasticsearch 实现高效搜索服务

使用 Go 语言与 Elasticsearch 实现高效搜索服务 什么是 Elasticsearch Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索引擎&#xff0c;能够存储、搜索和分析大量数据。它具有高可扩展性、快速的搜索速度&#xff0c;支持全文检索、多字段查询和近实时数据分析。…

mysql/doris 计算两个时间相差n天n时n分示范

mysql/doris 计算两个时间相差n天n时n分示范 两个时间&#xff1a;so.create_time&#xff0c;so.update_time CONCAT(FLOOR(DATEDIFF(HOUR ,so.create_time,so.update_time)/24),天,DATEDIFF(HOUR ,so.create_time,so.update_time)%24,时,DATEDIFF(MINUTE ,so.create_time,so…

自动猫砂盆“智商税”还是“真香”?2024自动猫砂盆保姆级干货

平时忙着上班&#xff0c;或者一遇到出差就要离家四五天&#xff0c;没办法给毛孩子的猫砂盆铲屎&#xff0c;导致粪便堆积太久。很多铲屎官也了解到有自动猫砂盆这种东西&#xff0c;但是生怕是智商税&#xff0c;总觉得忍忍手铲也可以&#xff0c;要知道&#xff0c;猫咪的便…

如何在阿里云一键部署FlowiseAI

什么是FlowiseAI FlowiseAI 是一个开源的低代码开发工具&#xff0c;专为开发者构建定制的语言学习模型&#xff08;LLM&#xff09;应用而设计。 通过其拖放式界面&#xff0c;用户可以轻松创建和管理AI驱动的交互式应用&#xff0c;如聊天机器人和数据分析工具。 它基于Lang…

网络安全-Morpheus

NVIDIA Morpheus 文章目录 前言一、简介1. NVIDIA Morpheus 是什么?二、优势1. 深入了解 NVIDIA Morpheus 的优势高管借助全面的数据可见性,实时检测威胁利用生成式 AI 提高效率提升性能,降低成本开发者轻松开发和部署功能丰富,灵活性强实时遥测三、用例Morpheus 用例四、A…

通过观测云 DataKit Extension 接入 AWS Lambda 最佳实践

前言 AWS Lambda 是一项计算服务&#xff0c;使用时无需预配置或管理服务器即可运行代码。AWS Lambda 只在需要时执行代码并自动缩放。借助 AWS Lambda&#xff0c;几乎可以为任何类型的应用程序或后端服务运行代码&#xff0c;而且无需执行任何管理。 Lambda Layer 是一个包…

AI绘画,AI生成图片

分享一个可以免费使用的AI生成图片的网站&#xff1a; https://openart.aihttps://openart.ai/create 1、登陆后点击右上角create 2、在创建页面左侧输入描述文案&#xff0c;下面调整生成图片张数&#xff0c;点击create&#xff0c;右边即可生成 我这里输入了在吃麦当劳的超…

笔记||VUE3

侦听器 | Vue.js (vuejs.org) 模板引用 | Vue.js (vuejs.org)

Java初阶~~四种内部类总结

文章目录 1.内部类的分类2.局部内部类2.1.基本语法2.2就近原则的理解 3.匿名内部类3.1基于接口的匿名内部类3.2基于普通类的匿名内部类3.3基于抽象类的匿名内部类3.4匿名内部类的细节3.5匿名内部类实践3.5.1作为实参进行传递3.5.2实践案例 4.成员内部类4.1基本介绍4.2外部类&am…

api测试和接口测试的区别

API测试和接口测试是软件测试中一个非常重要的领域&#xff0c;尤其是在当前Web应用程序和移动应用程序的发展中。虽然它们都测试了Web服务的功能&#xff0c;但是二者在测试方法和测试实施方面存在很大的差异。本文将介绍API测试和接口测试之间的主要区别 API测试的主要关注点…

【LLM论文日更】| BGE经典论文-CPACK

论文&#xff1a;https://arxiv.org/pdf/2309.07597代码&#xff1a;GitHub - FlagOpen/FlagEmbedding: Retrieval and Retrieval-augmented LLMs机构&#xff1a;BAAI领域&#xff1a;embedding model发表&#xff1a;SIGIR 2024 ​ 研究背景 研究问题&#xff1a;这篇文章…

MySQL插入优化-性能对比

插入优化主要包括&#xff1a; 批量插入条数据&#xff0c;而不是单个记录逐条插入。手动提交事务&#xff0c;避免自动提交事务带来的额外开销。使用load命令从本地文件导入。 性能对比 创建数据库表 CREATE TABLE if not exists tb_sku ( id int(20) …

防汛可视化系统:提升应急响应能力

通过图扑可视化系统实时监测水情、雨情和地理数据&#xff0c;辅助防汛决策与调度&#xff0c;提供直观的风险预警信息&#xff0c;从而优化资源分配&#xff0c;提高防汛应急响应效率。

​​​​​​​如何使用LTX Studio生成故事插画

在这个科技飞速发展的时代&#xff0c;人工智能已经成为创意领域的重要工具。LTX Studio 是一个强大的平台&#xff0c;可以帮助你将文字故事生成精美的插画。以下是详细的步骤&#xff0c;教你如何使用LTX Studio 生成故事插画。 生成prompt、&#xff1a; 使用copilot实现&…

SD2.0 Specification之SD卡寄存器(Card Register)

文章目录 CID(Card IDentification)RCA(Relative Card Address)DSR(Driver Stage Register)CSD(Card-Specific Data)SCR(SD CARD Configuration Register)OCR(Operation Conditions Register)SSR(SD Status Register)CSR(Card Status Register) 本文章主要讲解SD2.0的各个卡寄存…