算法库:OpenCV3编译配置
2016-01-20 23:55 更新:
关于Opencv3.1的lib文件
opencv_aruco310d.lib
opencv_bgsegm310d.lib
opencv_bioinspired310d.lib
opencv_calib3d310d.lib
opencv_ccalib310d.lib
opencv_core310d.lib
opencv_datasets310d.lib
opencv_dnn310d.lib
opencv_dpm310d.lib
opencv_face310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_fuzzy310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_line_descriptor310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_optflow310d.lib
opencv_photo310d.lib
opencv_plot310d.lib
opencv_reg310d.lib
opencv_rgbd310d.lib
opencv_saliency310d.lib
opencv_shape310d.lib
opencv_stereo310d.lib
opencv_stitching310d.lib
opencv_structured_light310d.lib
opencv_superres310d.lib
opencv_surface_matching310d.lib
opencv_text310d.lib
opencv_tracking310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
opencv_xfeatures2d310d.lib
opencv_ximgproc310d.lib
opencv_xobjdetect310d.lib
opencv_xphoto310d.lib
本文主要介绍opecv3.0.0的编译和配置。开发环境是vs2013,系统平台是windows2008。尽管如此,对vs2010或windows7或opencv2.4.x也适用(亲测)。因为在公司是window7+vs2010+opencv2.4.10,在实验室是windows7+vs2013+opencv3.0.0,在寝室是window2008+vs2013+opencv3.0.0,它们配置过程基本一致。写这份文档正是在寝室进行的。
本文分为两部分,第一部分是采用opencv官方编译的库,第二部分介绍自编译和配置。
关于opencv3.0.0的下载和vs2013的安装,略。
第一部分 配置OpenCV官方编译的库
1.解压下载的opnencv3.0.0到C:\opencv3x。若无opencv3x目录,则先新建之。目录结构如下:
   
2.添加环境变量:c:\opencv3x\opencv\build\x86\vc12\bin。不知道如何添加环境变量请百度或谷歌。若是vs2012则将vc12改为vc11。若是vs2010,则只能自己编译啦(详见后文),因为官方编译库已经不支持vs2010。
注:build目录下有x86目录和x64目录的选择。若是x86系统平台,则只能选择x86,因为x86系统只能编译x86的程序。若是x64系统平台,则x86目录和x64目录都可以选,因为x64平台既可以编译x86程序也可以编译x64程序,你自己想写x64的软件还是x86的软件,就选择相应的目录即可。
3.创建空win32控制台应用程序。如下图所示。

4.配置项目属性。
(1)在VC++ Directories->Include Directories追加以下字符串:
c:\opencv3x\opencv\build\include
c:\opencv3x\opencv\build\include\opencv
c:\opencv3x\opencv\build\include\opencv2

(2)在VC++ Directories->Library Directories追加以下字符串:
c:\opencv3x\opencv\build\x86\vc12\lib

(3)在Linker->Input->Additional Dependencies追加如下字符串:C:\opencv3x\opencv\build\x86\vc12\lib目录下的文件名最后个字母为d的所有lib文件。由于这里使用的官方编译好的库,所有只有两个文件:
opencv_ts300d.lib
opencv_world300d.lib


之所以只添加文件名最后个字母为d的lib文件是因为我们的程序工作在Debug模式下。
5. 测试配置是否成功。
添加一个.cpp文件。复制一张图像到工程目录下。我这里复制的是一张名为nao.jpg图像。

测试代码如下:
#include <opencv2\opencv.hpp>	//导入opencv2的常用头文件
using namespace cv;			//导入opencv2库的命名空间
using namespace std;			//导入c++标准库的命名空间
void main()
{
	Mat img = imread("nao.jpg", 1);
	namedWindow("nao", WINDOW_NORMAL);	  //destroyWindow();destroyAllWindows()
	if (!img.data) { return; }
	imshow("nao", img); waitKey(0);
}
编译运行后结果,如下:

第二部分 自编译和配置opencv库
自编译opencv,通常是为了使用其未集成的库(跟踪源码不一定就要编译opencv,只要你对opencv够熟悉),典型的就是opencv_contrib-master库。
opencv_contrib-master的下载地址:https://github.com/Itseez/opencv_contrib
打开网页后点右侧的“Download Zip”即可下载为.zip文件。如下图所示。

1.解压下载的opnencv3.0.0到C:\opencv3x。若无opencv3x目录,则先新建之。
2.解压opencv_contrib-master到C:\opencv3x\opencv,并重命名为sourcesCotrib。也可不重命名或命名为其它名,看个人习惯。
3.在C:\opencv3x\opencv下新建目录buildOpencv,用于存储cmake后的文件。
4.C:\opencv3x\opencv下的build目录可删除。因为我们要编译自己的库,所以官方的库可以直接删除啦。这样,可以省去2.4G的空间。以上四步之后,目录结构如下:




5.打开cmake-gui(若没有安装则自行安装吧)。
Where is the source code 目录选择:C:\opencv3x\opencv\sources
Where to build the binaries 目录选择:C:\opencv3x\opencv\buildOpencv

单击左下角的“configure”。弹出编译器选择。这里根据自己情况选择,我安装的是vs2013,所以选择vs2013。还有vs2013 win64, vs 2013 arm等选项,无需理会。以X86方式的编译库对X86系统和X64系统都适用。针对arm平台的,没有用过,不发表意见。

单击“finish”后开始配置,配置将不成功。错误的原因是下载“ippicv_windows_20141027.zip”失败。于是到:
http://osdn.jp/projects/sfnet_opencvlibrary/downloads/3rdparty/ippicv/ippicv_windows_20141027.zip/
下载此文件。然后复制到:
C:\opencv3x\opencv\sources\3rdparty\ippicv\downloads\windows-b59f865d1ba16e8c84124e19d78eec57将已经存在的ippicv_windows_20141027.zip覆盖。然后重新“configure”,并反复“configure”直到界面不再出现红色背景。
为使用opencv自带实例和opencv_contrib-master扩展包,需要选中”BUILD_EXAMPLES”,并为OPENCV_EXTRA_MODULES_PATH赋值:C:/opencv3x/opencv/sourcesContrib/modules。再次反复“configure”直到界面不再出现红色背景。之后,单击“generate”。至此,cmake过程结束。


注:也可以在命令提示符下进行cmake过程,命令如下:
cd c:\opencv3x\opencv\buildOpencv
cmake -DOPENCV_EXTRA_MODULES_PATH=C:\opencv3x\opencv\sourcesContrib\modules -DBUILD_EXAMPLES=ON C:\opencv3x\opencv\sources
6. 打开C:\opencv3x\opencv\buildOpencv将有opencv.sln,打开此解决方案。编译“CMakeTargets”下的“INSTALL”。几分钟就编译完成,我的编译结果如下图所示,316个成功,1190个警告,不同系统可能有所不同。

以上生成的Debug版本,若需要Release版本,则还可切换到Release模式下生成一个Release版本。
生成完成之后,可清理解决方案,节省2~3G的空间。OpenCV.sdf也有100M多,将其删除。
注:若要反复编译OpenCV.sln,则不要清理解决方案,因为清理后再“build”相当于“rebuild”,编译时间又要几分钟。若不清理,则可能只花几秒钟。哪些情况下需要反复编译OpenCV了?就是你对源码做了一些更改又想查看更改源码后程序的效果,就得重新编译OpenCV。这里的“更改”比较有意思,只要你动了OpenCV源码,哪怕是你在源码里键入一个空格,然后再删除,表面上看什么手脚也没做啊,但是你就得重编译。
7. 添加环境变量:C:\opencv3x\opencv\buildOpencv\install\x86\vc12\bin
8. 创建空Win32项目,见第一部分的内容
9. 配置项目属性。
(1)在VC++ Directories->Include Directories追加以下字符串:
c:\opencv3x\opencv\buildOpencv\install\include
c:\opencv3x\opencv\buildOpencv\install\include\opencv
c:\opencv3x\opencv\buildOpencv\install\include\opencv2
(2)在VC++ Directories->Library Directories追加以下字符串:
c:\opencv3x\opencv\buildOpencv\install\x86\vc12\lib\x86\vc12\lib
(3)在Linker->Input->Additional Dependencies追加如下字符串:C:\opencv3x\opencv\build\x86\vc12\lib目录下的文件名最后个字母为d的所有lib文件。不同的系统或不同版本的vs,lib文件的个数可能不一样,我的有:
opencv_bgsegm300d.lib
opencv_bioinspired300d.lib
opencv_calib3d300d.lib
opencv_ccalib300d.lib
opencv_core300d.lib
opencv_datasets300d.lib
opencv_face300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_hal300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_latentsvm300d.lib
opencv_line_descriptor300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_optflow300d.lib
opencv_photo300d.lib
opencv_reg300d.lib
opencv_rgbd300d.lib
opencv_saliency300d.lib
opencv_shape300d.lib
opencv_stereo300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_surface_matching300d.lib
opencv_text300d.lib
opencv_tracking300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib
opencv_xfeatures2d300d.lib
opencv_ximgproc300d.lib
opencv_xobjdetect300d.lib
opencv_xphoto300d.lib
注:可将C:\opencv3x\opencv\buildOpencv\install内的所有文件复制到C:\opencv3x\opencv\build\内(前面不是已经删除了吗,其实你只要删除build内的内容即可,若真删除了,新建一个也一样的),使得对前一部分介绍的配置也适用。但若重新编译了OpenCV,则要重新复制这些文件。
10.测试是否配置成功。见第一部分内容。
算法库:OpenCV3编译配置的更多相关文章
- qt5.11.2+vs2017环境下opencv3.4.1编译配置
		
OpenCV是一个开源的计算机库,它可以帮助视觉工作者做很多富有创造性的工作,在图像处理领域扮演着重要的角色.由于opencv3.x的存在,不管你是学生还是研究人员,是专家还是初学者,都可以快速的建立 ...
 - Win10 下Cmake编译配置 Opencv3.1 + Cuda7.5 + VS2013
		
折腾了三天终于配置成功了,在此写下编译配置的全部步骤和遇到的很多坑. 整体介绍: OpenCV 中 CUDA 实现的函数还不是太多,使用前要在OpenCV的官网上确认以下你想要的功能是否已经实现,否则 ...
 - (2)RGB-D SLAM系列- 工具篇(依赖库及编译)
		
做了个SLAM的小视频,有兴趣的朋友可以看下 https://youtu.be/z5wDzMZF10Q 1)Library depended 一个完整的SLAM系统包括,数据流获取,数据读取,特征提取 ...
 - 算法库:Matlab与C++混合编程
		
算法库:Matlab与C++混合编程 最近做光流算法预演过程中,下载的源码中涉及到了Matlab和C++的混合编程.在同事Matlab2014的环境下,程序到是一下就运行通过了.但在我这Matlab2 ...
 - 【内核】linux2.6版本内核编译配置选项(二)
		
目录 Linux2.6版本内核编译配置选项(一):http://infohacker.blog.51cto.com/6751239/1203633 Linux2.6版本内核编译配置选项(二):http ...
 - 开源库SRT编译指南
		
SRT(Secure,Reliable,Transport)是Haivision公司开发的一套开源媒体传输协议,用于在不稳定的网络环境下,优化媒体数据的传输性能. SRT的码流加密基于开源库open ...
 - VS2013+Opencv3.3配置教程
		
转载自: https://blog.csdn.net/u014797226/article/details/78283873?locationNum=5&fps=1 参考博文1: 操作环境: ...
 - 一个好用的多方隐私求交算法库JasonCeng/MultipartyPSI-Pro
		
Github链接传送:JasonCeng/MultipartyPSI-Pro 大家好,我是阿创,这是我的第29篇原创文章. 今天是一篇纯技术性文章,希望对工程狮们有所帮助. 向大家推荐一个我最近改造的 ...
 - 转载:Centos7 从零编译配置Memcached
		
序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...
 
随机推荐
- 下载word文档
			
来源:http://www.cnblogs.com/damonlan/archive/2012/04/28/2473525.html 作者:浪迹天涯 protected void GridView1_ ...
 - const, static and readonly
			
const, static and readonly http://tutorials.csharp-online.net/const,_static_and_readonly Within a cl ...
 - 转载: scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
			
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...
 - Linux启动过程详解 (转)
			
启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘 ...
 - [转] matlab saveas 和imwrite的区别
			
http://hi.baidu.com/curbzz/item/04a69e805fc334e3e596e035 saveas(handle,['目录','文件名']) 如果只有一幅图,handle设 ...
 - 从1970年1月1日00:00:00 GMT以来此时间对象表示的毫秒数转化为Datetime
			
1970年1月1日(00:00:00 GMT)Unix 时间戳(Unix Timestamp)对时间转换 将Long类型转换为DateTime类型 /// <summary> /// 将L ...
 - 287. Find the Duplicate Number
			
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...
 - 黄聪:WordPress根目录(Root)
			
index.php:WordPress核心索引文件,即博客输出文件. license.txt:WordPress GPL许可证文件. my-hacks.php:定义了博客输出之前处理的追加程序.默认安 ...
 - smartgit document Rebase
			
The Rebase command allows you to apply commits from one branch to another. Rebase can be viewed as m ...
 - storm的数据源编程单元Spout学习整理
			
Spout呢,是Topology中数据流的源头,也是Storm针对数据源的编程单元.一般数据的来源,是通过外部数据源来读取数据项(Tuple),并读取的数据项传输至作业的其他组件.编程人员一般可通过O ...