使用itk编程实例详解.docx
- 文档编号:10148376
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:18
- 大小:1.62MB
使用itk编程实例详解.docx
《使用itk编程实例详解.docx》由会员分享,可在线阅读,更多相关《使用itk编程实例详解.docx(18页珍藏版)》请在冰豆网上搜索。
使用itk编程实例详解
步骤:
1、创建项目文件夹,包括源文件和生成文件夹
如:
test,test-bin,
前者test用于存放源代码(c++),CMakeLists.txt的cmake配置文件
后者test-bin用于存放经过cmake编译后生成的文件(工程文件.sln等)
2、编写源代码文件和CMakeLists.txt文件
Cmake基本语法
注:
cmake命令最好大写
1. #表示注释
2. 变量:
使用set命令显式定义及赋值,在非if语句中,使用${}引用,if中直接使用变量名引用;后续的set命令会清理变量原来的值;
3. command(args...) #命令不分大小写,参数使用空格分隔,使用双引号引起参数中空格
4. set(vara;b;c)<=>set(varabc) #定义变量var并赋值为a;b;c这样一个stringlist
5. Add_executable(${var})<=>Add_executable(abc) #变量使用${xxx}引用
6. 条件语句:
if(var)#var 非empty0NNoOFFFALSE...#非运算使用NOT
…
else()/elseif()…endif(var)
7. 循环语句
Set(VARabc)
Foreach(f${VAR}) …Endforeach(f)
8. 循环语句
WHILE()…ENDWHILE()
Cmake命令:
链接来源:
1、PROJECT(HELLO)#指定项目名称,生成项目名称
使用${HELLO_SOURCE_DIR}表示项目根目录
2、INCLUDE_DIRECTORIES#指定头文件的搜索路径
INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR})#指定HELLO项目源文件根目录
3、TARGET_LINK_LIBRARIES#添加链接库
TARGET_LINK_LIBRARIES(HELLO${ITK_LIBRARIES})
#将可执行文件与ITK_LIBRARIES链接成最终文件HELLO
4、ADD_EXECUTABLE#编译可执行程序,指定编译
ADD_EXECUTABLE(HELLOhello.cxx)#将hello.cxx编译成可执行文件
CMakeLists.txt(cmake配置文件)
#注明cmake最低版本要求,不写会报错或警告
cmake_minimum_required(VERSION2.8)
#定义项目名称为SHOWPIC,和可执行文件showpic没有任何关系
PROJECT(SHOWPIC)
#找ITK的包,如果找到就加载进来
FIND_PACKAGE(ITK)
IF(ITK_FOUND)
INCLUDE(${USE_ITK_FILE})
ENDIF(ITK_FOUND)
#指定SHOPIC项目源文件根目录的搜索路径
INCLUDE_DIRECTORIES(${SHOWPIC_SOURCE_DIR})
#指定编译可执行程序,将showpic.cxx编译成可执行文件
ADD_EXECUTABLE(SHOWPICshowpic.cxx)
#将可执行文件与ITK_LIBRARIES链接成最终文件SHOWPIC
TARGET_LINK_LIBRARIES(SHOWPIC${ITK_LIBRARIES})
Showpic.cxx(cxx中的x是x,y,z的x)
#include"itkImage.h"
#include"itkImageFileReader.h"
#include"itkImageFileWriter.h"
intmain(int,char*argv[])
{
//通过指定表示图像的像素和维数的值来定义图像的类型。
typedefunsignedcharPixelType;
constunsignedintDimension=2;
typedefitk:
:
Image
//以reader和writer的类型为例,这两个类通过图像类型被参数化:
typedefitk:
:
ImageFileReader
typedefitk:
:
ImageFileWriter
//用New()函数并把结果赋值给一个itk:
:
SmartPointer来创建每个类型的对象
ReaderType:
:
Pointerreader=ReaderType:
:
New();
WriterType:
:
Pointerwriter=WriterType:
:
New();
//被读或写的文件名用SetFileName()函数传递
reader->SetFileName("D:
\\1.jpg");
writer->SetFileName("D:
\\itk\\showpic\\2.jpg");
//由于Reader的输出并未连接到其他的滤镜,所以在目前的例子中我们必须精确//地调用//Updata()方法。
//对Reader调用更新:
reader->Update();
//直接传递reader的输出给writer的输入来创建一个短数据通道:
writer->SetInput(reader->GetOutput());
//数据通道的执行被最后对象的Update()触发。
在这个情况下,最终的数据通道对象是writer。
在通道被执行时,最明智的自我保护程序的做法是在一个try/catch模块中插入Update()以抛出异常。
try
{
writer->Update();
}
catch(itk:
:
ExceptionObject&err)
{
std:
:
cerr<<"ExceptionObjectcaught!
"< : endl; std: : cerr< : endl; returnEXIT_FAILURE; } return0; } 3、用CMAKE进行配置编译 打开cmake软件 Whereisthesourcecode: (源文件路径): D: /ITK/showpic/showpic Wheretobuildthebinaries: (生成文件存放路径): D: /ITK/showpic/showpic-bin 点击后状态如下图 接着,显示第一次配置完成,但上面部分为红色,应该继续点击configure,直到红色部分变白 再次点击之后效果: 接着,点击旁边的: Generate生成 4、在编译器visualstdio2010中进行编译 首先,找到showpic-bin目录,里面已经生成了工程项目,打开它,找到 SHOWPIC.sln文件(工程文件),双击打开 进入了vs10界面 5、查看结果: 首先,源程序(showpic.cxx)中的reader->SetFileName(“D: \\1.jgp”);(查看该段代码) 图片1.jgp就存放在D盘目录下,如图所示 读入和输出之后的图片名2.jpg,则存放在: D: \ITK\showpic 对比效果: 6、遇到问题分析: (1)在cmake编译过程中可能会报错,一般都是CMakeLists.txt文件没有配置好,字母写错或不应该小写(cmake命令)。 如果解决不了,重新进行编译,不过要先将showpic-bin(生成文件夹目录)里面的东西都删除掉,然后在进行编译,否则编译还是会报错。 (2)还有一个报错”打开不了itkImage.h文件 如下所示 这个错误也是由CMakeLists.txt文件没有配置好,理由基本同上。 交流: 1136958892
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 itk 编程 实例 详解