VTK8.2.0+ITK4.13.2+VS2015配置_熬一条味道鲜美的鱼的博客-程序员宅基地

技术标签: vs2015  vtk配置教程  教程  itk配置教程  vtk8.2.0  itk4.13.2  

1.VTK8.2.0+ITK4.13.2 Cmake下载

vtk及itk作为每个入医学图像处理坑的小伙伴们而言,我认为是非常需要掌握的两个比较好的工具。废话不多说了,开始!
首先我们可以去vtk(https://vtk.org/)及itk(https://itk.org/)官网进行下载

window系统选择.zip下载,tar.gz适用于unix系统。

下载最新版本的itk5.0.1.zip
解压下载的vtk8.2.0.zip及itk4.13.2.zip
然后下载最新版本的cmake
在这里插入图片描述解压之后

我用的是cmake3.15.2 其实都一样

2.VTK8.2.0编译

双击cmake-gui.exe

设置编译路径为D:/VTK-8.2.0/build(你开心就好随便设置)然后点击configure

选择vs2015 x64
之后你会发现cmake 窗口变红了
此时勾选BUILD_SHARED_LIB
设置CMAKE_INSTALL_PREFIX 路径D:/VTK-8.2.0/build/vtk8.2 这个路径是用来存放编译好的vtk库的(BUILD_DOCUMENTATION及BUILD_EXANPLES等可以选择将会生成文档和例子但是会增加编译的时间 ,可以选择看官网的文档)
1.再次点击Configure 等到 显示Configure done
2. 再点击Generate 等到显示Generate done
3. 选择open Project
在vs2015中点击ALL_BUILD右键选择生成 经过漫长的等待之后将会显示成功 再点击INSTALL 右键生成 生成之后Debug版本的就编译完成了



选择Release重新ALL_BUILD 生成及INSTALL 将会得到Release版本的DLL和lib
还记得我们一开始存放的编译好的vtk路径吗?D:\VTK-8.2.0\build\vtk8.2.0 现在立面已经有啦编译好的vtk了 但是是release版本的
你可以在D:\VTK-8.2.0\build中的bin及lib文件夹下找到相应的debug版本的dll及lib

下面我们在vs2015中配置vtk环境
新建一个项目 添加c++文件

#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCylinderSource.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>

#include <array>

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);//使用vs渲染时需要添加这个

int main()
{
    //hello vtk程序
	
	vtkSmartPointer<vtkNamedColors> colors =
		vtkSmartPointer<vtkNamedColors>::New();

	std::array<unsigned char, 4> bkg{
     {
     26, 51, 102, 255 } };
	colors->SetColor("BkgColor", bkg.data());

	vtkSmartPointer<vtkCylinderSource> cylinder =
		vtkSmartPointer<vtkCylinderSource>::New();
	cylinder->SetResolution(8);

	vtkSmartPointer<vtkPolyDataMapper> cylinderMapper =
		vtkSmartPointer<vtkPolyDataMapper>::New();
	cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
	
	vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
	cylinderActor->SetMapper(cylinderMapper);
	cylinderActor->GetProperty()->SetColor(
		colors->GetColor4d("Tomato").GetData());
	cylinderActor->RotateX(30.0);
	cylinderActor->RotateY(-45.0);

	vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
	renderer->AddActor(cylinderActor);
	renderer->SetBackground(colors->GetColor3d("BkgColor").GetData());
	
	renderer->ResetCamera();
	renderer->GetActiveCamera()->Zoom(1.5);

	vtkSmartPointer<vtkRenderWindow> renderWindow =
		vtkSmartPointer<vtkRenderWindow>::New();
	renderWindow->SetSize(300, 300);
	renderWindow->AddRenderer(renderer);
	renderWindow->SetWindowName("Cylinder");

	vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
		vtkSmartPointer<vtkRenderWindowInteractor>::New();
	renderWindowInteractor->SetRenderWindow(renderWindow);

	renderWindow->Render();
	renderWindowInteractor->Start();
	return 0;

}

在项目属性页面设置包含目录及库目录如下 要选X64哦!!! 注意!!!包含目录一定选择到D:\vtk8.2\VTK\include\vtk-8.2 不要忘了vtk-8.2

链接器 输入 附加依赖项添加lib
可以在D:\vtk8.2\VTK\lib中新建一个文本文档txt 输入DIR *.lib /B >LIBLIST.TXT 然后重新命名成 .bat文件 后 双击 将会出现一个txt文件 里面就是需要附加依赖添加的lib文件名 复制粘贴就好

将所有的dll 文件放入程序的运行文件夹中然后ctrl+F5运行程序 就成功了哦 是不是很简单

3. ITK4.13.2 编译

同上
使用cmake进行编译 设置好路径 configure 时候需要选择 vs2015 x64
configure之后变红后选择此时勾选BUILD_SHARED_LIB
设置CMAKE_INSTALL_PREFIX 路径D:/InsightToolkit-5.0.1/build/itk5.0.1 这个路径是用来存放编译好的itk库的(BUILD_DOCUMENTATION及BUILD_EXANPLES等可以选择将会生成文档和例子但是会增加编译的时间 ,可以选择看官网的文档)
在这里插入图片描述

注意!!!!!!这里有个事情我要说明一下如果你想进行itk与vtk的混合编译需要在itk中进行勾选Module_ITKVtkGlue
然后设置VTK_DIR 为 D:/VTK-8.2.0/build/vtk8.2/lib/cmake/vtk-8.2(就是你刚才vtk编译过程中存放编译好的vtk库的文件路径下的/lib/cmake/vtk-8.2) 路径不对会出错的!!!这里我试了很多次才发现
1.再次点击Configure 等到 显示Configure done
2. 再点击Generate 等到显示Generate done
3. 选择open Project
在vs2015中点击ALL_BUILD右键选择生成 经过漫长的等待之后将会显示成功 再点击INSTALL 右键生成 生成之后Debug版本的就编译完成了
release版本和vtk的生成方法一样 生成后的变换也是一样的
在vs2015中的itk配置方法和vtk也是一样的同上
然后我们可以写一个itk与vtk混合编程的Hello world 来试一试

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageToVTKImageFilter.h"
#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"

#include "itkBMPImageIOFactory.h"
#include "itkJPEGImageIOFactory.h"

#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);//使用vs渲染时需要添加这个
VTK_MODULE_INIT(vtkRenderingFreeType);
int main()
{
    
	itk::BMPImageIOFactory::RegisterOneFactory();
	itk::JPEGImageIOFactory::RegisterOneFactory();
	typedef itk::Image<unsigned short, 2>ImageType;
	typedef itk::ImageFileReader<ImageType>ReaderType;
	typedef itk::ImageToVTKImageFilter<ImageType>ConnectorType;

	
	ReaderType::Pointer reader = ReaderType::New();
	ConnectorType::Pointer connector = ConnectorType::New();
	reader->SetFileName("E:\\b2.jpg");

	connector->SetInput(reader->GetOutput());
	connector->Update();

	vtkImageViewer* viewer = vtkImageViewer::New();
	vtkRenderWindowInteractor*interactor = vtkRenderWindowInteractor::New();
	viewer->SetInputData(connector->GetOutput());
	viewer->SetupInteractor(interactor);
	viewer->SetColorWindow(255);
	viewer->SetColorLevel(12);
	viewer->Render();
	interactor->Initialize();
	interactor->Start();
	return 0;

}

##3.1 可能遇到的问题

itk如果版本太新vtk可能不支持 遇到vtk不支持的问题 大家可以选择itk老版本的itk进行编译试一试

4. VTK8.2.0+ITK4.13.2 编译好的下载可以直接用

vtk8.2.0

itk4.13.2勾选了VTK扩展版本

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aubestau/article/details/101386575

智能推荐

Git版本控制工具操作学习系列_Am0o0s的博客-程序员宅基地

问题1:我刚才提交了什么?如果你用 git commit -a 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。 你就可以用下面的命令显示当前HEAD上的最近一次的提交(commit):(master)$ git show或者$ git log -n1 -p...

java jpa 教程 查询_JPA 查询新对象示例_Ruocheng Guo的博客-程序员宅基地

JPA教程 - JPA查询新对象示例我们可以在JPQL中创建新对象。以下代码调用JPQL中的EmployeeDetails构造函数。executeAndPrintQuery("SELECT NEW cn.w3cschool.common.EmployeeDetails(e.name, e.salary, e.department.name) FROM Employee e");例子下面的代码来自...

Ubuntu系统下增加中文字体_放下扳手&拿起键盘的博客-程序员宅基地

前言:最近在使用Pycharm、Clion编译器的时候,使用中文做注释时,Ubuntu系统下的显示效果太闹心。方案:为解决这个问题,查阅了资料,得知解决方案如下:1)复制 windows系统下的字体文件(msyhl.ttc)(这里以微软雅黑为例)到ubuntu系统中;2)将该文件的后缀改为ttf,即可在ubuntu系统下被识别;3)将该文件copy到ubuntu系统下存放字体的指定路径,我的系统路径如下:/usr/share/fonts/opentype/noto/注:可通

ClickHouse函数介绍_此木Y的博客-程序员宅基地_clickhouse sum

ClickHouse函数介绍ClickHouse中至少存在两种类型的函数 :常规函数和聚合函数。 常规函数的工作就像分别为每一行执行一次函数计算一样(对于每一行,函数的结果不依赖于其他行)。 聚合函数则从各行累积一组值(即函数的结果依赖整个结果集)。1. 常规函数1.1 算数函数对于所有算术函数,如果存在这样的类型,则结果类型将计算为结果适合的最小数字类型。 根据位数、是否有符号、是否浮点数,同时取最小值。 如果没有足够的位,则采用最高位类型,如:SELECT toTypeName(0), toT

使用Python爬取所需要的文章_梦落影逝的博客-程序员宅基地

使用Python爬虫爬取某阁的小说平时喜欢看一些书,加上朋友有时候也喜欢让我给他爬取一些小说,趁最近空闲下来就简单的记录一下自己写爬虫的过程吧首先需要导入相关的模块import requestsfrom lxml import etree 安装对应模块的方式# pip快速安装pip install requestspip install lxml向网站发送请求并获取网站数据如图所示红框的地方为这本小说的网址:网页地址于是就可以获取到网页数据:def book():

随便推点

vivado路径最大时钟约束_Vivado使用误区与进阶系列(九)读懂用好Timing Report_weixin_39901358的博客-程序员宅基地

本文摘自《Vivado使用误区与进阶》,作者为Xilinx工具与方法学应用专家Ally Zhou。《 XDC 约束技巧》 系列中讨论了 XDC 约束的设置方法、约束思路和一些容易混淆的地方。我们提到过约束是为了设计服务,写入 Vivado中的 XDC 实际上就是用户设定的目标,Vivado 对 FPGA 设计的实现过程必须以满足 XDC 中的约束为目标进行。那我们如何验...

C/C++中对于浮点型精确小数点后几位的输出方法_JunJie_1107的博客-程序员宅基地

如果用于输出控制精度的话,直接使用printf()较为方便

Android studio build.gradle配置,debug下使用正式签名,重命名apk_y_chengyong的博客-程序员宅基地

Android studio build.gradle配置,debug模式下使用正式版签名,重命名apk

大数据技术原理与应用-大数据概述_wolfchenxing的博客-程序员宅基地

介绍了大数据发展历程、基本概念、主要影响、应用领域、关键技术、计算模式和产业发展,并阐述了云计算、物联网的概念及其与大数据之间的紧密关系。

将项目发布到多台服务器并解决高并发(Nginx)_别人放弃我坚持的博客-程序员宅基地_一个项目部署多台服务器

1、准备Nginx2、准备多台服务器组成服务器集群(3台为例,最好为奇数)3、高并发的后台搭建 架构描述:服务端搭建好多集群,有nginx集群,服务器集群,数据库集群。是高并发的基本要求。1.准备3台tomcat端口号为:8091,8092,80932.修改端口号1.修改三台服务器配置文件改变端口号4.三台服务器的ip127.0.0.1:8091127.0.0.1:8092127.0.0.1:80933.配置Nginx实现轮询方式Nginx.conf的配置1.#配置多台to

【MATLAB】MATLAB概论及功能介绍_秃头仔仔的博客-程序员宅基地_matlab功能和作用

MATLAB概论MATLAB特点:强大的数值运算功能矩阵运算多项式和有理分式运算数据统计分析数值积分优化处理高级又简单的程序环境:命令行的交互式工作方式程序文件方式工作,是一种面向对象的程序设计语言扩充能力强,可以自定义工具箱开放的源程序,可进行二次开发强大的可视化能力提供两个层次的图形命令提供图形句柄的低级图形命令简单实用的高级图形命令:用来绘制二维、三维乃至多维图形功能强大的工具箱功能性:符号计算、可视化的建模仿真、文字处理学科性:控制系统

推荐文章

热门文章

相关标签