Win10+VS2015平台下OpenCV3.1.0的x86和x64平台的Debug与Release模式的编译与配置

闲话

   昨天晚上在新电脑上重新配置了OpenCV3.1,之前虽然也弄过,不过当时是初学者,只是照着网上的教程简单的配置了Debug模式下x86的运行环境(大部分的教程也只教了这种方式的配置......)。想着反正闲着没事,我就一口气把其余的几种模式都配置了,过程中虽然因为自己sb,出现了一些错误,不过还是比较轻松就配置完成了,下面开始进入正题。


环境与工具

   操作系统:Win10专业版 版本号:1511

   VS版本:Visual Studio Community 2015

   OpenCV版本:3.1.0 下载地址:http://downloads.sourceforge.net/project/opencvlibrary/opencv-win/3.1.0/opencv-3.1.0.exe

   Cmake3.3.1 下载地址:http://download.csdn.net/detail/mooneve/9668883


OpenCV解压与Cmake

         

       把上面提供的东西下载后,首先把OpenCV解压



         

         打开之后选择好解压目录,注意命名,不然到后面很容易弄混的。我设置的路径为:E:\opencv



         解压出来之后是这样的




       然后安装Cmake,安装步骤按照默认的走就可以了。安装完后,打开Cmake,点击右边的Browse Source按钮,选择到我们刚才解压出来的opencv的源码目录:E:/opencv/sources

然后下面的框选择build的库目录:E:/opencv_build_x86

注意:我这里会写上x86是为了与后面生成x64的库进行区别,不同的库里面的文件是有差别的,所以大家最好在生成的时候也区分一下。




       选择好目录后,就可以点击上图红框标志的Configure按钮,然后会弹出一个界面让你选择使用什么编译器进行生成库,cmake默认是使用x86进行生成的,也就是下图的Visual Studio 14 2015。




        当我们想生成x64的库的时候,就要点击下拉菜单,选择Visual Studio 14 2015 Win64。




        话题回来,当我们选择好了x86的Visual Studio 14 2015后,就点击Finish按钮,然后cmake就会开始进行一堆处理了,就像下图。




        等一段时间后,它就会出现下面的红色背景。




        在红色背景的框中,找到WITH_TBB这一项,然后把钩给选上。接着就点击Generate按钮开始生成x86的库文件了。





        我们打开刚才设置的 E:\opencv_build_x86 目录就会发现里面多出了许多的东西。




       进行到这里,我们就把x86的库文件生成好了,接下来就是生成x64的库了,步骤其实和上面差不多,

只不过要重新设置一个目录 E:\opencv_build_x64

然后选择Visual Studio 14 2015 Win64进行生成。

同样要记住,在红色背景的框中,找到WITH_TBB这一项,然后把钩给选上

最后同样得到了x64的库文件。





x86与x64库文件的Debug和Release模式编译


        得到x86与x64库文件后,就开始要用vs2015进行编译了。首先我们进入x86的库目录E:\opencv_build_x64中,找到OpenCV.sln这一项,直接点击就会在vs中打开了。打开后解决方案的目录如下:





        细心的话就会发现,这个项目在vs中只有win32的运行平台,而没有x64的,这也正好说明了这是x86的库。




        我们首先选择上图中的Ddbug模式,然后在“解决方案”上右击选择“重新生成解决方案”,这样vs就会开始编译,生成x86平台的Debug模式下的文件,当然就是我们要的bin和lib。




       当vs的输出中出现了下面的信息就代表编译完成了。       

 



       这个时候,我们进入E:\opencv_build_x86\bin\Debug 和 E:\opencv_build_x86\lib\Debug目录中,就可以看到生成的文件了。而在Release中则没有。




        进行到这里,我们只是得到了x86平台下的Debug模式的文件,接下来当然就是Release模式下的了。步骤很简单,只是选择Release模式,然后在“解决方案”上右击选择“重新生成解决方案”。等待一段时间后,就Release模式下的bin和lib就同样得到了。





        到这里我们就得到x86平台下的Debug 和Release模式的文件了。x64平台Debug 和Release模式的文件同样是用上面的方式生成。这里就不再重复了。





       接下来就把生成的各种文件汇总吧!这样便于我们以后适用,而且除了生成的bin和lib外,其余的部分我们是用不到的,这些东西都可以删除掉,节约了相当一部分的硬盘空间(这些生成的文件占用了13.3G空间....)。当然,如果你以后使用的过程中想源码追踪的话,就当我没说。


把 E:\opencv_build_x86\bin 和 E:\opencv_build_x86\lib 这两个目录拷贝到E:\opencv\build\x86\vc14 目录中(这个目录是自己建立的);

把 E:\opencv_build_x64\bin 和 E:\opencv_build_x64\lib 这两个目录拷贝到E:\opencv\build\x64\vc14 目录中覆盖。


VS2015配置Opencv

         

        首先是建立环境变量,在桌面上右键“此电脑”,选择“属性”,然后选择“高级系统设置”,在弹出的窗口中选择“高级”,然后点击“环境变量”。





        在弹出的窗口中,找到Path变量,然后点击“编辑”




        点击右上角的“新建”,把bin目录都添加进去,

E:\opencv\build\x64\vc14\bin\Release

E:\opencv\build\x64\vc14\bin\Debug

E:\opencv\build\x86\vc14\bin\Release

E:\opencv\build\x86\vc14\bin\Debug

如下图:




        接下来在VS中新建一个C++的空项目。在项目中新建一个头文件stdafx.h,代码如下:

#pragma once
#define _WIN32_WINNT 0x0501	//XP以上
#include<opencv2\opencv.hpp>
using namespace cv;
#ifdef _DEBUG
#pragma comment(lib,"opencv_calib3d310d.lib")
#pragma comment(lib,"opencv_core310d.lib") 
#pragma comment(lib,"opencv_features2d310d.lib") 
#pragma comment(lib,"opencv_flann310d.lib")
#pragma comment(lib,"opencv_highgui310d.lib") 
#pragma comment(lib,"opencv_imgcodecs310d.lib")
#pragma comment(lib,"opencv_imgproc310d.lib")
#pragma comment(lib,"opencv_ml310d.lib")
#pragma comment(lib,"opencv_objdetect310d.lib")
#pragma comment(lib,"opencv_photo310d.lib")
#pragma comment(lib,"opencv_shape310d.lib")
#pragma comment(lib,"opencv_stitching310d.lib")
#pragma comment(lib,"opencv_superres310d.lib")
#pragma comment(lib,"opencv_ts310d.lib")
#pragma comment(lib,"opencv_video310d.lib")
#pragma comment(lib,"opencv_videostab310d.lib")
#else
#pragma comment(lib,"opencv_calib3d310.lib")
#pragma comment(lib,"opencv_core310.lib") 
#pragma comment(lib,"opencv_features2d310.lib") 
#pragma comment(lib,"opencv_flann310.lib")
#pragma comment(lib,"opencv_highgui310.lib")
#pragma comment(lib,"opencv_imgcodecs310.lib")
#pragma comment(lib,"opencv_imgproc310.lib") 
#pragma comment(lib,"opencv_ml310.lib")
#pragma comment(lib,"opencv_objdetect310.lib")
#pragma comment(lib,"opencv_photo310.lib")
#pragma comment(lib,"opencv_shape310.lib")
#pragma comment(lib,"opencv_stitching310.lib")
#pragma comment(lib,"opencv_superres310.lib")
#pragma comment(lib,"opencv_ts310.lib")
#pragma comment(lib,"opencv_video310.lib")
#pragma comment(lib,"opencv_videostab310.lib")
#endif

       这段代码的作用就是当代码选择不同的编译模式即Debug或Release时,引用不同的lib文件。上面的lib文件中,末尾以d结尾的就是Debug模式使用的,没有d结尾的就是Release模式使用的。




然后在test项目名上右击,选择属性,打开项目属性页。这个时候就要注意属性页上的两个位置,如下图:

        我们配置x86、x64的 Debug和Release模式时,就是在上面两个选择的。 

        选择VC++目录,首先选择包含目录,点击右侧的下三角,选中编辑,在弹出的界面中,点击新建,依次把下面三个opencv的路径添加进去。
E:\opencv\build\include\opencv
E:\opencv\build\include\opencv2
E:\opencv\build\include

       然后选择库目录, 点击右侧的下三角,选中编辑,在弹出的界面中,点击新建,把下面这个目录添加进去。
E:\opencv\build\x86\vc14\lib\Release
       注意:因为这个属性页上目前是配置的Release模式下的x86平台,所以添加的是这个库文件。其他的配置与这个类似。
       Release模式下的x64平台

        Debug模式x64平台

        Debug模式x86平台

测试

         到目前为止,vs2015与opencv3.1.0的配置就完成了。接下来就是测试我们的配置是否正确。新建一个cpp文件,代码如下:
#include "stdafx.h"
int main(int argc, char* argv[])
{
	Mat img = imread("fruits.jpg");
	imshow("input image", img);
	printf("Hello image!");
	waitKey(0);
	return 0;
}

         在 Debug的x86、x64和Release的x86、x64四种状态下,代码应该都是可以正常运行的。截图如下:
         Release模式下的x64平台



          Release模式下的x86平台




          Debug模式下的x86平台




          Debug模式下的x64平台




参考博客

         http://blog.csdn.net/jarvischu/article/details/8468894

         https://my.oschina.net/yuyang/blog/639590

         http://blog.csdn.net/njlinxiang/article/details/51141555

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值