OPENCV环境配置Microsoft Visual Studio 2012 + OpenCV2.4.3环境配置作者:CCK日期:2013年1月8日Microsoft Visual Studio 2012 + OpenCV2.4.3环境配置目录Microsoft Visual Studio 2012 + OpenCV2.4.3环境配置 01. 实验环境 (1)2. 实验目的 (1)2.1 OpenCV简介 (1)2.2 实验内容 (2)3. OpenCV的生成及安装 (3)3.1 下载OpeCV,CMake,TBB并安装 (3)3.2 用CMake生成VS2012的OpenCV工程 (3)3.3 用Opencv VS2012工程编译生成自己的OpenCV库 (6)4. 配置Opencv开发环境&编写测试程序 (7)4.1 添加OpenCV环境变量 (7)4.2 配置包含目录和库目录 (8)4.3 编写测试程序 (9)5. 实验心得 (10)1.实验环境Windows 8 x64Microsoft Visual Studio 2012OpenCV 2.4.3CMake2.8.10TBB412.实验目的2.1O penCV简介OpenCV(open source computer vision library)是一个基于C/C++语言的开源图像函数处理库。
它的主要模块包括:cv :核心函数库cvaux:辅助函数库cxcore:数据结构与线性代数库highgui:GUI函数库ml:机器学习函数库OpenCV是跨平台的,支持包括Windows、Unix以及Android等平台。
下图是英文wiki 上一张关于OpenCV概述的图。
2.2实验内容本次实验主要了解OpenCV的安装及配置,然后创建一个简单的程序测试。
安装方式有两种选择:1.直接下载OpenCV Windows平台安装文件。
可以在/downloads.html找到下载。
这是一个安装包,安装程序直接把OpenCV库文件解压到指定位置,并且还可以自动配置环境变量。
2.另外一种是源码安装(压缩包地址也可以在这里找到)。
如果你想用IPP、CUDA或者Qt自定义安装opencv,或者调试OpenCV工程时想对OpenCV代码进行源码跟踪,就需要从源码安装。
由于我的实验环境使用的VS2012的编译器,而官方的安装包并没有VS2012对应的VC11的库文件,如果使用VC10代替可以成功配置,但运行时会出现如下错误。
对于该问题,我们可以选择使用VC10的库文件配置,然后再在系统中安装VS2010的运行库,也可以先用方法二利用源码编译出VC11的库文件再配置。
这里我选择了后者。
3.OpenCV的生成及安装3.1下载OpeCV,CMake,TBB并安装1.从/downloads.html下载OpenCV2.4.3的windows平台安装文件,安装到D:\Program Files (x86)\ OpenCV\opencv2.4.3;2.从/cmake/resources/software.html下载CMake2.8.10安装的安装文件,直接安装;3.从/download下载tbb41_20121003oss的压缩包,解压到D:\Program Files (x86)\OpenCV\tbb41_20121003oss;4.配置TBB环境变量环境变量的Path里添加:D:\Program Files (x86)\OpenCV\tbb41_20121003oss\bin\ia32\vc11(ia32表示要编译32位工程,intel64表示要编译64位工程,vc11表示VS版本为2012)PS:以字为准,也可把两个环境变量都同时添加3.2用CMake生成VS2012的OpenCV工程新建文件夹OpenCVProject:D:\Program Files (x86)\OpenCV\OpenCVProject(用于存放自己的OpenCV编译工程)。
打开CMake,"Browse Source..."选择Opencv的目录D:/Program Files/opencv(内有CMake的组态档"CMakeLists.txt"),"Browse Build..."选择刚才自己新建的工程存放路径"D:\Program Files\OpenCVProject"。
点击Configure按钮,在出现的对话框中选择Visual Studio 11(如果编译64位dll注意选择64位VS11配置),默认Use default native compilers,Finish继续。
(如下图)配置完后往下拉,勾选WITH_TBB,点击Configure继续配置。
(如下图)修改红色部分“TBB_INCLUDE_DIRS”路径为D:\Program Files (x86)\OpenCV \tbb41_20121003oss\include,点击Configure继续配置。
(如下图)继续点击Configure,直到没有红色标记。
此时我们已经配置完成,点击Generate生成OpenCVProject工程,退出CMake。
(如下图)3.3用Opencv VS2012工程编译生成自己的OpenCV库经过大概10来分钟编译完成,此时已生成56个Debug版的dll和lib。
(如下图)添加Release版,再次编译。
(如下图)上面两步后就能在D:\Program Files (x86)\OpenCV\OpenCVProject\install目录看到最终Debug版和Release版的dll、lib、文档目录doc,以及头文件目录include(bin内为两个版本dll,lib内为两个版本lib)。
将该目录下的bin、include、lib三个文件夹的内容全部复制到D:\Program Files (x86)\OpenCV\opencv2.4.3\build\x86\vc11目录下。
此时占用6G多空间的D:\Program Files (x86)\OpenCVProject没有用了,但是如果想在调试时进行源码跟踪则不能删除,可以通过VS2012的“清理解决方案”来减到3G多。
至此,我们完成了OpenCV的源码编译与安装,我们将在下一环节进行OpenCV的配置。
4.配置Opencv开发环境&编写测试程序4.1添加OpenCV环境变量在环境变量Path里添加:D:\Program Files (x86)\OpenCV\opencv2.4.3\build\x86\vc11\bin。
加入后可能需要注销当前Windows用户(或重启)后重新登陆才生效。
4.2配置包含目录和库目录首先,打开VS2012,新建控制台应用程序TestOpenCV。
然后,打开VS菜单栏—>视图—>属性管理器。
因为vs2010之后的版本不像vs2008以前的版本在VS菜单栏—>工具—>选项—>项目解决方案—>VC++目录下可以一次性增加库目录,不过利用属性管理器对一个工程增加过一次库目录后,对以后的工程无需再增添。
如果仅需修改本工程的属性,直接在解决方案中右键选择属性进行修改即可即可。
下面介绍前者。
双击属性管理器中的Debug | Win32 下的er,在属性页—>通用属性—>VC++目录—>包含目录下加入:D:\Program Files (x86)\opencv2.4.3\build\include;D:\Program Files (x86)\opencv2.4.3\build\include\opencv;D:\Program Files (x86)\opencv2.4.3\build\include\opencv2。
(如下图)在属性页—>通用属性—>VC++目录—>库目录下加入: D:\Program Files (x86)\opencv2.4.3\build\x86\vc10\lib 。
(如下图)4.3 编写测试程序 将TestOpenCV 的主函数代码改为如下:// TestOpenCV.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#pragma comment ( lib , "opencv_core243d.lib" )#pragma comment ( lib , "opencv_highgui243d.lib" )using namespace cv;int main(){namedWindow( "show_image", WINDOW_AUTOSIZE );Mat src = imread( "opencv-logo.png" );while (1){imshow( "show_image", src );char c = waitKey(0);if ( c == ' ' )return 0;}return 0;}此处为vc11最后添加opencv官方的libMicrosoft Visual Studio 2012 + OpenCV2.4.3环境配置在工程目录下放一张图片“opencv-logo.png”。
编译运行结果如下:5.实验心得经过几个小时的查找资料,参考官方文档“VC 2008 Express下安装OpenCV2.0/2.1”以及其他的资料,摸索出了在最新的windows 8 x64 + VS2012平台配置最新的OpenCV2.4.3的方法。
为了解决VS2012的兼容性问题,我使用了最复杂的编译源码的方式进行配置,在这个过程中我学到了很多东西,并且更加了解了OpenCV。
网上关于VS2012的教程很少,有的那几个教程的配置是有问题的,他们的配置并不严谨,会出现很多问题,不过他们的方法给了我一点的启发,综合他们的方法我终于自己摸索出了正确的配置方法,虽然过程复杂了些,但是我也学到了很多东西,使用起来会更加方法,同时也可以为其他人的使用提供参考。
10 / 11。