【WinCV】小白在VS下安装opencCV2.4.11及3.0

来源:互联网 发布:php网店 编辑:程序博客网 时间:2024/06/06 08:57

本篇主要介绍如何配置openCV。

配置环境:

Visual Studio 2013 community

openCV3.0.0

openCV2.4.11

我电脑上安装了俩CV,本文讲解的方法适用于两种版本,配置时版本差异有影响的时候我会分开记述,但以3.0为主。


一、下载

首先进入opencv的官网http://www.opencv.org.cn/index.php/Download上下载一个版本,我选择的是opencv3.0.0

下载完成后双击运行,选择输出目录。我选择的是D:\Program Files\CV3,但是它自己会在这个目录下再建立一个opencv文件夹,把所有文件放在里面,也就是D:\Program Files\CV3\opencv(如果电脑上只需要一个opencv的话路径最后最好不要加上CV3)。然后Extract,解压完成后就完成了安装。


二、配置

首先设置环境变量,其实就是用一个变量名代替一个路径。

按键盘上“winkey+x”弹出菜单,然后选择“系统”,在出现的窗口上点击”高级系统设置“



然后”环境变量“



在”系统变量“下面选择”新建“


我这里写的路径是D:\Program Files\CV3\opencv\build,这里有必要先说一下环境变量是个什么东西。

前面安装的时候我选的解压地址是D:\Program Files\CV3,也就是说环境变量下面的这个地址指向的是我们安装的openCV里面的一个文件夹

暂时先说到这~~我们只需要知道这样新建了系统变量之后就可以用$(CV3)这个变量名来代替下面的变量值,后面写属性表的时候会接触到这个东西


然后我们还需要在系统变量path下面添加一个路径,跟刚才新建的CV3相似。可以看见path下面已经有了很多路径,那是安装其他软件时自己添加进去的(注意在已有路径的基础上添加新的路径时,后面的要和前面的用分号分割开)


新添加的这个路径是D:\Program Files\CV3\opencv\build\x86\vc12\bin,也是刚才安装时下面的一个目录。


蓝后就是愉快的属性表啦啦啦~~

这份属性表是VS2013下的,兼容32位和64位平台,兼容Debug和Release配置

下面是openCV3.0.0的属性表文档

<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  <ImportGroup Label="PropertySheets" />  <PropertyGroup Label="UserMacros" />  <PropertyGroup>        <IncludePath>$(CV3)\include;$(CV3)\include\opencv;$(CV3)\include\opencv2;$(IncludePath)</IncludePath>        <LibraryPath Condition="'$(Platform)'=='Win32'">$(CV3)\x86\vc12\lib;$(LibraryPath)</LibraryPath>        <LibraryPath Condition="'$(Platform)'=='X64'">$(CV3)\x64\vc12\lib;$(LibraryPath)</LibraryPath>  </PropertyGroup>  <ItemDefinitionGroup>        <Link Condition="'$(Configuration)'=='Debug'">          <AdditionalDependencies>opencv_ts300d.lib;opencv_world300d.lib;%(AdditionalDependencies)</AdditionalDependencies>        </Link>        <Link Condition="'$(Configuration)'=='Release'">          <AdditionalDependencies>opencv_ts300.lib;opencv_world300.lib;%(AdditionalDependencies)</AdditionalDependencies>        </Link>  </ItemDefinitionGroup>  <ItemGroup /></Project>


下面是openCV2.4.11的属性表文档(因为我有俩CV,所以这个在配置环境变量的时候是按照OPENCV命名的,这个影响很大!但是你把这篇文看完之后就知道怎么修改啦~)

<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  <ImportGroup Label="PropertySheets" />  <PropertyGroup Label="UserMacros" />  <PropertyGroup>        <IncludePath>$(OPENCV)\include;$(OPENCV)\include\opencv;$(OPENCV)\include\opencv2;$(IncludePath)</IncludePath>        <LibraryPath Condition="'$(Platform)'=='Win32'">$(OPENCV)\x86\vc12\lib;$(LibraryPath)</LibraryPath>        <LibraryPath Condition="'$(Platform)'=='X64'">$(OPENCV)\x64\vc12\lib;$(LibraryPath)</LibraryPath>  </PropertyGroup>  <ItemDefinitionGroup>        <Link Condition="'$(Configuration)'=='Debug'">          <AdditionalDependencies>opencv_calib3d2411d.lib;opencv_contrib2411d.lib;opencv_core2411d.lib;opencv_features2d2411d.lib;opencv_flann2411d.lib;opencv_gpu2411d.lib;opencv_highgui2411d.lib;opencv_imgproc2411d.lib;opencv_legacy2411d.lib;opencv_ml2411d.lib;opencv_nonfree2411d.lib;opencv_objdetect2411d.lib;opencv_ocl2411d.lib;opencv_photo2411d.lib;opencv_stitching2411d.lib;opencv_superres2411d.lib;opencv_ts2411d.lib;opencv_video2411d.lib;opencv_videostab2411d.lib;%(AdditionalDependencies)</AdditionalDependencies>        </Link>        <Link Condition="'$(Configuration)'=='Release'">          <AdditionalDependencies>opencv_calib3d2411.lib;opencv_contrib2411.lib;opencv_core2411.lib;opencv_features2d2411.lib;opencv_flann2411.lib;opencv_gpu2411.lib;opencv_highgui2411.lib;opencv_imgproc2411.lib;opencv_legacy2411.lib;opencv_ml2411.lib;opencv_nonfree2411.lib;opencv_objdetect2411.lib;opencv_ocl2411.lib;opencv_photo2411.lib;opencv_stitching2411.lib;opencv_superres2411.lib;opencv_ts2411.lib;opencv_video2411.lib;opencv_videostab2411.lib;%(AdditionalDependencies)</AdditionalDependencies>        </Link>  </ItemDefinitionGroup>  <ItemGroup /></Project>


接下来就是如何使用属性表了~


随便在哪里新建一个txt文档(这个等下改了后缀名就是属性表文件,文件名和保存路径你自己选哦~自己怎么用方便就怎么写)

于是我在我的安装路径D:\Program Files\CV3\opencv下建了一个opencv300.props(props是属性表文件的后缀)

然后把上面的代码复制进去

保存~~


简直好!如果只想使用的话跳到后面去看测试部分吧,,,

这里先讲一下怎么修改属性表。代码是我从某位大大那儿拿过来的,首先表示一下感谢~

原帖在这里哦http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html


前5行不需要修改(我也看不懂什么意思,但是是必须要的,应该是表明身份,版权啊什么的,去掉之后无法添加进project)



第六行有四个路径,分别是$(CV3)\include ; $(CV3)\include\opencv ; $(CV3)\include\opencv2 ; $(IncludePath)

前面说过$(CV3)是环境变量CV3的路径,所以我们进入到这三个文件夹下面来看看,首先是include


里面似乎只有俩文件夹,那我们再进入opencv下面看看


哇,全部是头文件!而进入opencv2下面也是差不多的,现在知道include是什么东西了。。。

我们写代码时用到    #include <cv.h>    什么的就是在这里找的

插一句,因为opencv2下面还有子目录,所以使用它的头文件应该这么写   #include <highgui/highgui.hpp>(其实打开opencv2下面的opencv.hpp看看,包含了opencv.hpp就相当于包含了一堆头文件,所以资源不紧张的时候就可以直接include opencv.hpp)

结论就是,属性表第六行  $(CV3)\include ; $(CV3)\include\opencv ; $(CV3)\include\opencv2 ; $(IncludePath)

这几个路径是寻找头文件时进入的路径。(虽然我还没懂最后一个是什么,但是需要的时候一般直接修改前面仨就行了)


回到属性表代码:



第七八两行分别是代表32位工程和64位工程的库文件目录,这是在vs中新建project的两种不同选择(所以这个属性表同时支持32位和64位程序)

$(CV3)\x86\vc12\lib    是指32位工程下用vs2013建立的工程的库文件,vc12是指visual studio 2013,以此类推,vc11是2012,vc10是2011

$(CV3)\x64\vc12\lib    跟上面差不多啦~~对于64位project的


第九、十行代码不看,看不懂。。。



11行和14行好对称。分析一下

第11行里面有个地址    $(Configuration)'=='Debug    看见Debug就笑了。。。

第14行也有    $(Configuration)'=='Release    话说Release什么意思,,我是初学者还真不懂

凭感觉能感觉到Debug的时候使用第12行,Relese的时候用第15行!

再来看看12行和15行里面这些文件是什么鬼。。

我记得前面使用了俩路径    $(CV3)\x86\vc12\lib    和    $(CV3)\x64\vc12\lib    吧,那就在这找找看咯~


总是保持一颗好奇的心就很容易得到答案~果然属性表里写的就是这几个文件,12行的带d,15行的不带d,就这么简单!


知道属性表怎么写的之后,版本修改或者安装路径修改之后重新配置就变得很容易了,只需要修改几个路径,几个文件名就行。(不过原则是根据软件改属性表,最好不要去修改openCV的文件。。要是你不是新手,请无视我的话)


插一句。。。opencv3.0的属性表里面lib文件只有4个,而前面的opencv2.x.x用到的lib文件都超级多,,,好在2.x.x有他们的共性,就是不同版本的lib文件名字只是修改了版本号,没有大的改变。比如说opencv2.4.8用的是opencv_ts248d.lib,那么opencv2.4.11用的就是opencv_ts2411d.lib


三、测试

打开vs2013,随手建立一个32位控制台应用


点了”ok“之后next,再把”Empty Project“前面勾上,Finish


工程建立好了,首先添加属性表,进入Property Manager窗口,右键工程名”cvdemo“,Add existing


在弹出的窗口中选择刚才保存的属性表


我们发现在Debug和Release下面都有了属性表(原谅我现在还不知道Release是什么意思。。。)

然后就是新建main咯~在Solution Explorer里面的Soucce Files上点右键,然后Add , New Item,建立cpp文件


最让人兴奋的就是测试代码了~

#include "highgui.h"int main(int argc, char** argv){IplImage* img = cvLoadImage("demo.jpg");cvNamedWindow("demo", CV_WINDOW_AUTOSIZE);cvShowImage("demo", img);cvWaitKey(0);cvReleaseImage(&img);cvDestroyWindow("demo");}


复制进去之后保存,然后随手找来一张jpg放在cvdemo工程的目录下(在工程目录下还有一个cvdemo目录,应该复制到里面那个cvdemo里面),名字改为demo.jpg


F5


ok~很成功

啥?怎么是轮廓?因为本来就是啊!

本来怎么会是轮廓?!!因为我美美哒的学姐怎么能给你们看!!!(我发誓不会让她看到这个轮廓,不然我会好惨。。。)


最后说一点。。。openCV3.0.0虽然被官网说得好,但是感觉用它做出来的小程序调试时打开窗口等一会儿才会出图片。然而2.4.11是立即显示图片的。并不清楚为什么。


向各位看完的表示感谢~

0 0
原创粉丝点击