1、使用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命令会清理变量原来的值; mand (args .)#命令不分大小写,参数使用空格分隔,使用双引号引
2、起参数中空格 4.set(var a;b;c) set(var a b c)#定义变量var并赋值为a;b;c这样一个string list 5.Add_executable($var) Add_executable(a b c)#变量使用$xxx引用 6.条件语句:if(var) #var非empty 0 N No OFF FALSE. #非运算使用NOTelse()/elseif() endif(var) 7.循环语句Set(VAR a b c)Foreach(f $VAR)Endforeach(f) 8.循环语句WHILE() ENDWHILE()Cmake命令:链接来源:1、PROJE
3、CT(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链接成最终文件HELLO4、ADD_EXECUTABLE #编译可执行程序,指定编译 ADD_EXECUTABLE(HELL
4、O hello.cxx ) #将hello.cxx编译成可执行文件CMakeLists.txt (cmake配置文件)#注明cmake最低版本要求,不写会报错或警告cmake_minimum_required(VERSION 2.8)#定义项目名称为SHOWPIC,和可执行文件showpic没有任何关系PROJECT(SHOWPIC)#找ITK的包,如果找到就加载进来FIND_PACKAGE(ITK)IF(ITK_FOUND) INCLUDE($USE_ITK_FILE)ENDIF(ITK_FOUND)#指定SHOPIC项目源文件根目录的搜索路径INCLUDE_DIRECTORIES($SHO
5、WPIC_SOURCE_DIR)#指定编译可执行程序,将showpic.cxx编译成可执行文件ADD_EXECUTABLE(SHOWPIC showpic.cxx)#将可执行文件与ITK_LIBRARIES链接成最终文件SHOWPICTARGET_LINK_LIBRARIES (SHOWPIC $ITK_LIBRARIES )Showpic.cxx (cxx中的x是x,y,z的x)#include itkImage.h#include itkImageFileReader.h#include itkImageFileWriter.hint main( int , char * argv)/通过
6、指定表示图像的像素和维数的值来定义图像的类型。 typedef unsigned char PixelType; const unsigned int Dimension = 2; typedef itk:Image ImageType; /以reader 和writer的类型为例,这两个类通过图像类型被参数化: typedef itk:ImageFileReader ReaderType; typedef itk:ImageFileWriter WriterType; /用New( ) 函数并把结果赋值给一个itk:SmartPointer 来创建每个类型的对象 ReaderType:Poi
7、nter reader = ReaderType:New(); WriterType:Pointer writer = WriterType:New( ); /被读或写的文件名用SetFileName( )函数传递 reader-SetFileName( D:1.jpg ); writer-SetFileName( D:itkshowpic2.jpg ); /由于Reader 的输出并未连接到其他的滤镜,所以在目前的例子中我们必须精确/地调用 /Updata( )方法。 /对Reader 调用更新: reader-Update(); /直接传递reader 的输出给writer的输入来创建一个
8、短数据通道: writer-SetInput( reader-GetOutput() ); /数据通道的执行被最后对象的Update( )触发。在这个情况下,最终的数据通道对象是writer。在通道被执行时,最明智的自我保护程序的做法是在一个try/catch 模块中插入Update( ) 以抛出异常。 try writer-Update(); catch( itk:ExceptionObject & err ) std:cerr ExceptionObject caught ! std:endl; std:cerr err SetFileName(“D:1.jgp”);(查看该段代码)图片1.jgp就存放在D盘目录下,如图所示读入和输出之后的图片名2.jpg,则存放在:D:ITKshowpic对比效果:6、遇到问题分析:(1)在cmake编译过程中可能会报错,一般都是CMakeLists.txt文件没有配置好,字母写错或不应该小写(cmake命令)。 如果解决不了,重新进行编译,不过要先将 showpic-bin(生成文件夹目录)里面的东西都删除掉,然后在进行编译,否则编译还是会报错。(2)还有一个报错 ”打开不了itkImage.h文件如下所示这个错误也是由CMakeLists.txt文件没有配置好,理由基本同上。交流:1136958892
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1