算法库: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 ...
随机推荐
- 使自定义事件支持多绑定 js
<script language="JavaScript" type="text/javascript"> <!-- //定义类class1 ...
- 被Play framework狠狠的play了一把
1.起因 早就听说play framework很火,而且是拯救Java程序员的神器,所以在全国纪念抗战胜利之际,本着学(man)习(zu)研(hao)究(qi)的态度想进行一番尝试. 2. 经过 2. ...
- 微信支付(0923更新)商户支付密钥key的生成与设置
微信支付(0923更新)商户支付密钥key的生成与设置 说明:新版微信支付,用户必须授权登录才能支付.需要商家自己设置商户号支付密钥. 设置商户号支付密钥方法如下: 1. 申请通过审核后,打开微信发来 ...
- BI案例:BI在连锁零售业应用(ZT)
第一部分:连锁零售企业上BI的必要性. 目前国内的连锁零售行业的发展趋势,呈现出产业规模化,经营业态多样化,管理精细化的特点.所谓管理精细化就是"精耕细作搞管理,领先一步订系统". ...
- 拖动控件 javascript原生,兼容IE6-11、chrome、firefox、Opera、Safari
鼠标拖动元素,对于初学者来说,是一个很难的话题,其实只要应用好事件,就能很好的控制拖动的对象,其主要事件是 mousedown,mousemove,mouseup,其原理是在鼠标点击元素时,在给定鼠标 ...
- NoSQL之基础篇
NoSQL(NoSQL = Not Only SQL ),泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2. ...
- Java文件读写
import java.io.*; public class Study { public static void main(String[] args) { try { String strPath ...
- LeetCode "Binary Tree Vertical Order"
BFS + HashTable class Solution { int maxl, minl; unordered_map<int, vector<int>> hm; pub ...
- 关于jquery插件 入门
关于 JavaScript & jQuery 的插件开发 最近在温故 JavaScript 的面向对象,于是乎再次翻开了<JavaScript高级程序设计>第3版,了解到其中常 ...
- 8张图带你深入理解Java
1.字符串的不变性 下图展示了如下的代码运行过程: String s = "abcd";s = s.concat("ef"); 备注:String refe ...