vs2015 配置opencv 3.1.0

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/duan20140614/article/details/79262819

注意:opencv 3.1.0 版本之前,所有的功能模块集成到一块,但在此之后,分成了核心模块和opencv_contrib 模块两部分,contrib模块主要是一些最新的、还不太成熟的计算机视觉算法。所以如果想使用这些最新功能,必须将opencv_contrib模块和核心模块重新一起编译。

相关软件下载安装

需要下载opencv3.10opencv_contribcmake-gui

图:opencv下载说明


图:opencv_contrib下载说明


图:cmake下载说明


cmake下载的是免安装版本,解压缩之后打开cmake-gui就能直接运行。

将下载的3个文件安装/解压缩。


使用cmake 构建vs2015项目


打开bin目录下的cmake-gui.exe。

编译分为在x86和x64下2中编译方式,默认是使用x86编译。

1.      source code路径选择opencv3.1下的sources文件夹,build路径可以自己新建一个文件夹进行存放,如下图:



2.      打开Tool---Configure,如果想生成x86下的库,则选择Visual Studio 14 2015;如果想生成x64下的库,则选择Visual Studio 14 2015 Win64。然后点击Finish。如下图:


等待一段时间,软件会自动配置。

 

3.      配置完成后,找到OPENCV_EXTRA_MODULES_PATH,将opencv_contrib的目录放进去。如下图,我的opencv_contrib路径为D:/opencv/opencv_contrib-master/modules



4.      点击Generate,等待配置完成。


用Visual Studio 2015编译cmake构建的项目

1.      找到之前新建的newBuild目录,打开新生成的OpenCV.sln。

2.      配置管理器,将32位编译器Win32改为64位编译器x64,操作如下图:




3.      在解决方案资源管理器中,选中“解决方案‘OpenCV’”,右键-->重新生成解决方案。
4.      依旧是资源管理器中,找到CMakeTargets中的INSTALL,右键-->仅用于项目-->仅生成INSTALL。注:想要Debug版(格式为opencv_xxxx310d.lib)的和Release版(格式为opencv_xxxx310.lib)的lib的话,分别选择Debug和Release以后,生成两遍就可以了。完成后,D:/OpenCV3.1/sources/newBulid/install下会有很多东西。
5.配置  D:/OpenCV3.1/sources/newBulid/install/x64/vc14/bin这一环境变量

配置VS2015

1.      新建win32控制台项目。




2.      新建cpp源文件。

3.      与Visual Studio 2015编译cmake构建的项目中的配置方法一样配置管理器,将编译器改为x64.

4.      配置包含目录

我的是D:\opencv\opencv310\sources\newBulid\install\include

D:\opencv\opencv310\sources\newBulid\install\include\opencv

D:\opencv\opencv310\sources\newBulid\install\include\opencv2

如下图:



5.      配置库目录

我的是D:\opencv\opencv310\sources\newBulid\install\x86\vc14\lib

D:\opencv\opencv310\sources\newBulid\install\x86\vc14\staticlib

如下图:



6.      配置依赖项。

由于生成的依赖项太多,要是把每个lib一个一个写上去,很麻烦,有一种简便的方法,即,路径+*.lib,比如我的即为:

D:\opencv\opencv310\sources\newBulid\install\x86\vc14\lib\*.lib

D:\opencv\opencv310\sources\newBulid\install\x86\vc14\staticlib\*.lib

如下图



7.      以上是win32(x86)Debug配置方法,其他模式(x64、Release)配置方法类似。

第二种方法vs配置方法:使用属性表

3)添加新项目属性表。

       打开属性管理器:


        这时候出现的窗口是下面这样的,这是使用32位编译器的情况,如上面说到的,我们要将编译器改为64位的:


        这时候需要打开配置管理器,新建x64





        这样操作之后,属性管理器窗口多出了两个东西如下:


       接下来在Debug|x64或者Relase|x64右键(这里以Debug为例):


         添加属性表,名称改成一个方便自己记忆的名字,我这里用的是 opencv_3.1.props


        接着,在我们新添加的属性表处右键选择属性:


        然后就得到了一个很亲切的窗口,没错,这个在上面出现过,设置的过程也跟上面一样。按照上面的(一)24)所说的方法设置好包含目录”“库目录以及附属依赖项”。


        好了,当你设置好点下确定之后,你同样可以在main.cpp中输入(一)中给出的测试程序,运行即可。

       下面是重点,当你下一次再打开VS新建工程的时候,你需要做的仅仅是下面的事情:

       第一步:新建工程;

       第二步:打开配置管理器(上面有说到如何打开),将Win32改为x64

       第三步:在属性管理器中,添加现有属性表,将上面制作好的opencv_3.1.props添加进来如下图所示。


        这样就大功告成啦!!!接着在新建的main.cpp文件中就可以编程了,如果你不嫌烦的话,可以在试一下上面的测试程序。




测试KCF跟踪算法

在上面的工程中添加cpp源文件,并输入如下代码:

[cpp]  view plain  copy
 print ?
  1. #include <opencv2/core/utility.hpp>  
  2. #include <opencv2/tracking.hpp>  
  3. #include <opencv2/videoio.hpp>  
  4. #include <opencv2/highgui.hpp>  
  5. #include <iostream>  
  6. #include <cstring>  
  7.   
  8. using namespace std;  
  9. using namespace cv;  
  10.   
  11. int main() {  
  12.     // declares all required variables  
  13.     //! [vars]  
  14.     Rect2d roi;  
  15.     Mat frame;  
  16.     //! [vars]  
  17.   
  18.     // create a tracker object  
  19.     Ptr<Tracker> tracker = Tracker::create("KCF");  
  20.     //! [create]  
  21.   
  22.     // set input video  
  23.     //! [setvideo]  
  24.     std::string video = "E:\\demo1.avi";  
  25.     VideoCapture cap(video);  
  26.     //! [setvideo]  
  27.   
  28.     // get bounding box  
  29.     //! [getframe]  
  30.     cap >> frame;  
  31.     //! [getframe]  
  32.     //! [selectroi]选择目标roi以GUI的形式  
  33.     roi = selectROI("tracker", frame);  
  34.     //! [selectroi]  
  35.   
  36.     //quit if ROI was not selected  
  37.     if (roi.width == 0 || roi.height == 0)  
  38.         return 0;  
  39.   
  40.     // initialize the tracker  
  41.     //! [init]  
  42.     tracker->init(frame, roi);  
  43.     //! [init]  
  44.   
  45.     // perform the tracking process  
  46.     printf("Start the tracking process\n");  
  47.     for (;; ) {  
  48.         // get frame from the video  
  49.         cap >> frame;  
  50.   
  51.         // stop the program if no more images  
  52.         if (frame.rows == 0 || frame.cols == 0)  
  53.             break;  
  54.   
  55.         // update the tracking result  
  56.         //! [update]  
  57.         tracker->update(frame, roi);  
  58.         //! [update]  
  59.   
  60.         //! [visualization]  
  61.         // draw the tracked object  
  62.         rectangle(frame, roi, Scalar(255, 0, 0), 2, 1);  
  63.   
  64.         // show image with the tracked object  
  65.         imshow("tracker", frame);  
  66.         //! [visualization]  
  67.         //quit on ESC button  
  68.         if (waitKey(1) == 27)  
  69.             break;  
  70.     }  
  71.   
  72.     return 0;  
  73. }  









猜你喜欢

转载自blog.csdn.net/duan20140614/article/details/79262819