OpenCV最佳配置(forVisual Studio)

来源:互联网 发布:詹姆斯目前数据 编辑:程序博客网 时间:2024/06/06 00:53

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目录,然后加进去就是。

        使用环境变量,在团队合作时好处很大,其他人复制你的项目而无需修改配置。

        一切为了方便!

0 0