VTK8.2.0+ITK4.13.2+VS2015配置

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扩展版本

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值