OpenCV最佳配置(for Visual Studio)
tkorays(http://blog.csdn.net/tkorays)
闭嘴,除非你能一鸣惊人!
有时候浏览网页,发现有很多人不知道OpenCV怎么配置,不是头文件包含就是库链接出现问题,这里我来分享下我的配置。
当我还是一个编程小白的时候,我最怕的就是在项目中使用其他库。因为要自己在VS中配置!有时候虽然知道流程,但就是很讨厌,要输入许多长串的路径,还要输入各种静态连接库名称。在写一个小的功能时,众多库配置项目让人吐血!
经过多年学习后,如今发现一些技巧,和大家分享下。
下载安装
为了保证完整,还是从安装讲起。
直接在官方下载http://opencv.org/ 。
选择windows版本不是linux版本的,下载后,解压到一个目录。这里我选择的是2.4.8版本的,解压后,里面有build和source两个目录,build里面有编译好的库以及文档。我们只要使用这些就行了。
目录说明
你可以把这个build目录整个放到其他地方。有些用不到的东西大可以不用管,但是include、x86或x64目录是必须的(视平台而定)。
拿x86来说,里面有vc++的各个版本,vc12是vs2013里的vc++版本,vc11是vs2012的,这些表示各个vc版本编译的库,选择你的vc版本的库吧。最好这样,否则可能出现“没有找到msvcr*”之类的错误。
vc12目录里有bin,里面有一些可运行的程序以及动态链接库。
Vc12目录里有lib,是一些静态链接库。
而staticlib和lib不一样,使用它编译的程序不要动态链接库支持。
因此现在有include目录,里面有opencv和opencv2目录;适合自己平台的(如x86)vs版本的(vs2013的vc12)动态链接库以及其静态链接库。在某些时候你可以使用 staticlib,而不用动态链接库,这种方法这里不介绍。
创建环境变量
创建环境变量OPENCV_INCLUDE、OPENCV_LIB、OPENCV_BIN。
桌面右击计算机>>属性>>高级系统设置>>环境变量。
在用户的变量里(只对当前用户有效,如果你觉得你的系统环境变量不够乱,也可以继续往里面加)点击” 新建“:
图1 环境变量配置
按上图新建三个环境变量,OPENCV_INCLUDE指向OpenCV的include目录,OPENCV_LIB指向其lib的目录,OPENCV_BIN指向bin目录(lib和bin选择合适的)。
得到这三个环境变量后,我们就可以在VS里直接填写这些环境变量,而不用填写又臭又长的地址了。
创建项目
创建vs项目,并配置c++目录。
如图填写OpenCV目录,这里不用写目录,直接写环境变量就是了,是不是写的文字少了,不用记住具体路径了。要是移动了OpenCV库目录,不用改项目,只用改下环境变量就行了。
图2 C++目录配置
最重要的是团队合作时配置不用修改啊!~~
静态链接库问题
在某些时候你是不是不想在项目配置里填静态链接库,一方面这些库名字长,另一方面可能由于这个项里的其他人使用opencv另一个版本,这时候别人直接下载你的项目时就要修改库链接。
因此,我们可以使用#pragmacomment(lib ,”balabala”)来链接。我曾在网上找到一个人写的opencv的自动识别版本的库链接代码。
修改了部分,如下:
#ifndef_TK_CVLIB_H_
#define_TK_CVLIB_H_
#pragma once
#include<opencv2/core/version.hpp>
#defineCV_VERSION_ID CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION)CVAUX_STR(CV_SUBMINOR_VERSION)
#ifdef _DEBUG
#definecvLIB(name) "opencv_" name CV_VERSION_ID "d"
#else
#definecvLIB(name) "opencv_" name CV_VERSION_ID
#endif
/*
* Example:
* #pragmacomment( lib, cvLIB("core") )
*/
#endif
这样,只要你include了这个头文件,就可以使用#pragmacomment( lib, cvLIB("core") )来加载一些opencv类库,不用管版本什么的。
小结
这种方法可以推广,如配置IPP等。这些类库的配置,无非就是找到include、lib、bin目录,然后加进去就是。
使用环境变量,在团队合作时好处很大,其他人复制你的项目而无需修改配置。
一切为了方便!