在酝酿了半个月之后,鄙人终于磨磨蹭蹭的下载安装了CV2.2-win32版本。但由于下载到的是针对VS2010优化的,无法遇见安装在2008中会发生什么问题。终于在煎熬了48小时+各种goole+自力更生后成功compiled~ 以下为安装流程,与CV2.1、2.0版本的安装原理大同小异,但由于2.2的文件组织结构发生变化,可能会导致像我这样的小白照抄步骤的话无法成功安装:
1. 下载安装OpenCV2.2到任意西文路径。
2. 下载安装 CMake 2.8 ,安装后用于导出CV的c++项目文件。
http://www.cmake.org/cmake/resources/software.html
(1) 如图所示,选择编译资源,和编译后结果的保存路径(如 F:\OpenCV2.2\vc2008 )。点击configure,配置为 VS 9 2008,配置无误后点击Generate生成各种工程文件。
(2) 在编译结果的文件夹内生成OpenCV.sln的VC Solution File,请用VS 2008 打开OpenCV.sln, 然后全部编译,无误后批生成所有EXAMPLE。
至此,OpenCV的*d.dll文件(for debug)和*.dll文件(for release)将出现在 \vs2008\bin 目录中;OpenCV的*d.lib文件(for debug)和*.lib文件(for release)将出现在\vs2008\lib 目录;头文件*.h出现在 vs2008\include\opencv2中。可以被 VS 2008 调用的OpenCV动态库
(5) 配置系统环境变量 将...\vs2008\bin加入Windows系统环境变量Path中,可能要重启。
(6) 为VS2008配置 OpenCV环境!如图,配置CV程序可能需要的库文件和头文件。到了这一步问题终于出现了,按照CV中文站上的安装教程安装的话,VS死都提示 xxx.h 文件无法找到。经过多番摸索,最后是确定文件结构造成的问题。
首先,完全生成OpenCV.sln内的代码后,\vs2008\include 和 \vs2008\lib 内会出现相应的文件,.lib文件的路径 xxx\vs2008\lib 只需按照教程直接添加即可。
但是include文件则不同,在2.1及其以下版本中的文件组织方式不同,2.2中由于一些重大更新,在opencv文件夹同级目录下拥有opencv2文件夹(未使用VS08批生成之前),所有相应的头文件其实都已经迁入其中,保留opencv文件夹的目的是为了向下兼容,打开opencv文件夹里的任意头文件,我们发现代码处大致有:
#ifndef __OPENCV_OLD_CXCORE_H__
#define __OPENCV_OLD_CXCORE_H__
//#if defined(__GNUC__)
//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module"
//#endif
#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#endif
实际上编译被跳转了,但是回到 \vs2008\inlcude目录下,惊讶的发现生成的结果事实上未包含 opencv文件夹!此时如果仅仅把 ...\vs2008\include\opencv2配置,则vs2008仍然无法导入头文件,此时需要手动将 \include\opencv 目录复制到 \vs2008下,然后追加配置 ...\vs2008\include\opencv。最后F5编译,bingo~