OPENCV、ITK、VTK和VS2010集成小结

时间:2022-03-10 10:07:12

一、OPENCV与VS2010的搭建(opencv2.3.1):没有自己CMake,直接安得编译好的库,配置环境变量和配置2010

网址:http://www.cnblogs.com/jamiechu/archive/2012/03/01/2376266.html

按照博客中的步骤配置

1.    首先是环境变量的设置

2.    然后是配置2010

3.    按照步骤配置完成后程序编译报错,又在VC++包含目录中添加了三个

D:\OpenCV\opencv\build\include

D:\OpenCV\opencv\build\include\opencv

D:\OpenCV\opencv\build\include\ opencv2

4.    然后运行出现错误:系统丢失opencv_core231.dll文件,将D:\OpenCV\opencv\build\gpu\x86\bin下的该文件粘贴在C:\Windows\System32

5.    运行后又报错:系统丢失opencv_highgui231.dll文件,也将之粘贴在C:\Windows\System32

运行后,没有错误但是程序没有显示效果,单步调试了一下应该是图片加载的问题,因为图片没有加载进去,问题没有解决!

 

果然是程序的问题,有复制了一个测试程序,并将图片放在了E:\VS2010\test\test目录下,运行后正确,opencv配置完成。

 

自己Cmake的步骤:

http://blog.sina.com.cn/s/blog_7b8c158f01015cdn.html

 

二、ITK搭建

配置完全按照博客进行:

http://blog.sina.com.cn/s/blog_79aae9bd0101da0c.html

但是出现一些小问题:

1.    ITK中示例和测试程序选为OFF,否则多出400多个文件,用2010编译需要相当长的时间。

2.    D:\I_VTK\ITK\ITK_bin目录下找到 ITK.sln, 点击,使用 VS2010进行编译。不会操作,直接在Solution Exploer上点击右键生成即可。

 

 

三、VTK搭建

 

安装配置过程主要结合本文和博客进行配置http://blog.csdn.net/tdmyl/article/details/7400584

1. 准备

下载

vtk-5.10.2.zip;

vtkdata-5.10.2.zip;

vtk-5.10.2-win32.exe;

cmake-2.8.6-win32-x86;下载地址:www.vtk.org

2. 平台环境

win7 32bit

visual studio 2010

3. 开始配置

      配置cmake

 

解压和安装时最好是放到与VC++安装的路径相近的地方。

(1).执行vtk-5.8.2-win32.exe,安装目录为:D:\Program Files \VTK5.8.2,本文件夹下新生成一个bin文件;

(2).vtk-5.8.2.zip解压到D:\Program Files\VTK5.8.2\VTK,把vtkdata-5.8.2.zip解压到D:\Program Files\VTK5.8.2\VTKdata

执行cmake-2.8.6-win32-x86,安装目录为:D:\Program Files\CMake 2.8.6

(3).运行cmake cmake 的作用是生成一个 VS2010 工程项目,使得 vtk 可以被 VS2010 编译,“Where is the source code”用来指定VTK源码加压缩后的文件夹位置(D:\Program Files\VTK5.8.2\VTK)“Where to build the binaries”用来指定 VS2010 工程项目的输出位置(D:\Program Files\VTK5.8.2\bin);建议就这样设置,就把项目输出放在自动生成的bin文件夹下面;当然水灵的视频说了可以在自建文件夹下面,我在配置时出现了问题;

 

(4).其他的目前先不用做,直接点“Configure”配置一下,大约运行个十分钟左右,就会显示出一片红色的结果,这时候在“Advanced”前打个勾;

build_examples: 就是询问是否编译vtk中的例子,如选则on,就要花时间把vtk的例子编译一遍。建议不选,否则很耗时间;

build_testing: test code 就是vtk开发者用来测试 vtk代码的一些测试代码,我们常常把它们当成学习vtk的例子,与build_examples类似。不选!

build_shared_libs: 如果设置为off,就只会生成lib文件,用于开发肯定是够了。如果设置为on,将会多生成dll文件。建议选择上,配置结束后把D:\Program Files\VTK5.8.2\bin下所有的.dll文件拷贝到C:\Windows\system32下;


cmake_install_prefix: 这个比较重要,就是以后要安装vtk的路径。安装的好处就是可以从 1G多的文件中提取出.h .lib .dll等精华,安装在指定目录下,并修改系统环境变量。(这个默认的是C:\Program Files\VTK,这个在编译INSTALL时会出现文件,在之后会讲到,先默认);

vtk_data_root: 一般地,cmake可以自己找到vtkdata的路径,但如果没有,把D:\Program Files\VTK5.8.2\vtkdata\填上即可,告诉cmakevtk需要的数据都在哪里

vtk_use_parallel: 对于想用vtk做并行计算的朋友,要把这个选上,对于只想学学vtk的,保持默认off

vtk_use_guisupport:
必须把它设置为 on,再次configure之后,会出现一个新的选项vtk_use_mfc,把它也设置为on就行了。提示:在cmake中,有些选项是依赖于另一些选项的,比如vtk_use_guisupportvtk_use_mfc,当我们禁用vtk_use_guisupportvtk_use_mfc是看不到的。

修改完cmake选项以后,再按一次configure按钮,就只有vtk_use_mfc是红色的了,选择vtk_use_mfc,再按一次configure,就可以生成vc的工程文件了。

 

配置vs2010

 

(5)在之前指定的“Where to build the binaries” VS2010 工程项目输出目录中,双击打开生成的”.sln"文件

 

(6)右键点击“ALL_BUILD”选择“rebuild”(重新生成)就可以进行编译生成了,大约需要半个小时

      注意:如果在编译的时候,出现一个error,是由于windowsIE版真相对vs2008过低,提示sdk中一个错误。找到vtkMFCwindow.cpp,将前面的宏定义修改为:

 

  #ifndef WINVER

  #define WINVER 0x0501//你可改为更高版本

  #endif

 

#ifndef _WIN32_WINNT

#define _WIN32_WINNT 0x0500 // 这是我改的

#endif

 

另外还有一个错误:vtkio.dll延迟加载失败,改成添加vtkio.lib文件

(7)生成结束后,在解决方案里找到“INSTALL”,右击-->调试-->启动新实例,它会把之后实现 vtk 项目需要的“.h, .lib, .dll, .exe“集中输出到一个位置,位置是在第3cmake生成时,结果框中有个“cmake_install_prefix”,就是它指示的位置,也可以修改其值。默认情况下,“.h, .lib, .dll, .exe“会被放到 C:\Program Files\VTK 目录下

     这里由于win7增加了权限控制,可能 install 会出如下错误:

 

1>------ 已启动生成: 项目: INSTALL, 配置: Debug Win32 ------
1> 
1>
正在执行生成后事件...
1>-- Install configuration: "Debug"
1>CMake Error at cmake_install.cmake:31 (FILE):
1>  file cannot create directory: C:/Program Files/VTK/lib/vtk-5.8.  Maybe need
1>  administrative privileges.
1>Project : error PRJ0019:
工具从"正在执行生成后事件..."
1>
生成日志保存在“file://d:\vtk_5.8.0\bin\INSTALL.dir\Debug\BuildLog.htm”
1>INSTALL - 1
个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 70 最新, 0 已跳过 ==========

 

     这个时候只要修改之前指定的“Where to build the binaries” VS2010 工程项目输出目录中的cmake_install.cmake文件中的CMAKE_INSTALL_PREFIX项即可,如下,把它改至D:/Program Files/VTK:

 

# Set the install prefix

IF(NOT DEFINED CMAKE_INSTALL_PREFIX)

   SET(CMAKE_INSTALL_PREFIX "D:/Program Files/VTK")

ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)

 

(**)编译后会出现错误:

Unable to start program 'D:\VTK5.8.0\bin\Debug\INSTALL'系统找不到指定文件

不必管它,只要不报错就行

 

(8)这个 VS2010 vtk 项目可以生成 ”Debug, Release, MinSizeRel, RelWithDebInfo” 四种模式所需要的“.h, .lib, .dll, .exe“文件,可以通过修改项目的配置并重复56)两步来生成,为了避免文件覆盖,需要将前一次生成的文件放到其他目录下(我就编译了Debug模式,其他的没试过,一般来说也用不到的吧=.=

 (9)至此,vtk编译已经完成了,我们可以进行测试了,新建一个控制台空项目,新建一个cpp源代码文件,将以下代码拷入:

[cpp] view plaincopy

#include "vtkConeSource.h"   

#include "vtkPolyDataMapper.h"   

#include "vtkRenderWindow.h"   

#include "vtkCamera.h"   

#include "vtkActor.h"   

#include "vtkRenderer.h"   

#include "vtkProperty.h"  

  

#include "windows.h"  

  

int main()   

{   

       vtkConeSource *cone = vtkConeSource::New();   

       cone->SetHeight( 3.0 );   

       cone->SetRadius( 1.0 );   

       cone->SetResolution( 10 );   

         

       vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();   

       coneMapper->SetInputConnection( cone->GetOutputPort() );   

         

       vtkActor *coneActor = vtkActor::New();   

       coneActor->SetMapper( coneMapper );   

         

       vtkRenderer *ren1= vtkRenderer::New();   

       ren1->AddActor( coneActor );   

       ren1->SetBackground( 0.1, 0.2, 0.4 );   

         

       vtkRenderWindow *renWin = vtkRenderWindow::New();   

       renWin->AddRenderer( ren1 );   

       renWin->SetSize( 300, 300 );   

         

       int i;   

       for (i = 0; i < 360; ++i)   

       {   

              renWin->Render();   

              ren1->GetActiveCamera()->Azimuth( i );   

              Sleep(200);  

       }   

         

       cone->Delete();   

       coneMapper->Delete();   

       coneActor->Delete();   

       ren1->Delete();   

       renWin->Delete();   

         

       return 0;   

}  

 

(10)然后配置该项目的各种环境,libinclude

参照上一篇博客