OpenCV学习笔记(八)—— OpenCV 3.1.0 + opencv_contrib编译(Windows)

由于在学习图像识别中的特征点检测中,需要用到Surf和Sift算法,但是这两个算法在OpenCV 3.1.0的Release版本中并不存在,因为他们是存放在opencv_contrib目录下面的未稳定功能模块,所以如果我们想要使用这个目录的功能,就需要自己重新进行OpenCV的编译。

一、准备工作:

1.下载OpenCV安装包:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0.0/

安装过程实际上就是解压过程,安装完成后得到:

2.下载opencv_contrib源码:https://github.com/Itseez/opencv_contrib

下载之后直接解压,得到源码目录:

3.下载cmake-gui工具:http://www.cmake.org/cmake/resources/software.html

下载完成后,直接解压即可使用,不必安装。

二、使用cmake生成OpenCV.sln:

1.打开cmake-gui\bin目录下的cmake-gui.exe工具:

2.填写相应参数,包括:OpenCV源码目录和OpenCV.sln工程的导出目录,开始导出OpenCV.sln工程:

第一次导出时需要设置后面用来编译此OpenCV.sln工程的VS的版本,这里我用的是VS
2015:

设置完成之后点击“Generate”开始生成工程:

3.第一次编译完成之后,我们需要将额外的opencv_contrib加到工程中进行第二次编译,在配置表中找到“OPENCV_EXTRA_MODULES_PATH”,设置其参数值为open_contrib源码包中的modles目录,我的目录是“E:\OpenCV\tools\opencv_contrib-master\modules”:

设置完成之后点击Configure进行配置,不报错的话就进行第二次编译:

第二次编译一般很快就能完成:

编译完成后,我们在资源管理器下查看上面设置的文件输出目录,发现目录下多出了很多文件,其实就是OpenCV.sln工程文件:

三、用VS打开OpenCV.sln工程,编译生成Debug和Release库:

1.用VS 2015打开OpenCV.sln工程,在解决方案中可以查看工程目录:

2.编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别:

在解决方案中选中工程,右键选择重新生成解决方案:

3.找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”-->“仅生成INSTALL”:

然后,在工程目录下的install目录中,可以看到生成了一堆文件:

四、把新的库文件配置到到项目中:

  1. VC++目录-->包含目录,添加:

    D:\opencv3\opencv\mybuild\install\include

  2. VC++目录-->库目录,添加:

    D:\opencv3\opencv\mybuild\install\x86\vc12\lib

    D:\opencv3\opencv\mybuild\install\x86\vc12\staticlib

  3. 链接器-->输入-->附加依赖项,添加: (下面添加的release的版本,注意添加的库与编译选项要一致)

opencv_aruco310.lib

opencv_bgsegm310.lib

opencv_bioinspired310.lib

opencv_calib3d310.lib

opencv_ccalib310.lib

opencv_core310.lib

opencv_datasets310.lib

opencv_dnn310.lib

opencv_dpm310.lib

opencv_face310.lib

opencv_features2d310.lib

opencv_flann310.lib

opencv_fuzzy310.lib

opencv_highgui310.lib

opencv_imgcodecs310.lib

opencv_imgproc310.lib

opencv_line_descriptor310.lib

opencv_ml310.lib

opencv_objdetect310.lib

opencv_optflow310.lib

opencv_photo310.lib

opencv_plot310.lib

opencv_reg310.lib

opencv_rgbd310.lib

opencv_saliency310.lib

opencv_shape310.lib

opencv_stereo310.lib

opencv_stitching310.lib

opencv_structured_light310.lib

opencv_superres310.lib

opencv_surface_matching310.lib

opencv_text310.lib

opencv_tracking310.lib

opencv_ts310.lib

opencv_video310.lib

opencv_videoio310.lib

opencv_videostab310.lib

opencv_xfeatures2d310.lib

opencv_ximgproc310.lib

opencv_xobjdetect310.lib

opencv_xphoto310.lib

ippicvmt.lib

4、关于imread的问题。如果图片名称是存在txt文档中,用readImageLists方法提取到list列表时,要特别注意txt文档的换行符必须是“UNIX 终束符 -LF"。否则读取到的文件名会多出"\r"字符,导致读取图像文件失败。

时间: 2024-10-11 14:03:42

OpenCV学习笔记(八)—— OpenCV 3.1.0 + opencv_contrib编译(Windows)的相关文章

QT+opencv学习笔记一 opencv配置及Mat浅拷贝

今天终于把Qt + opencv配置成功了,中间有一些曲折,在这里记录一下. vs2013 + opencv的方法之前记录过,但这次的不太一样,我们一开始按照这篇文章配置pro Qt5中进行OpenCV开发教程 但是,死活出不来结果,研究发现,我们用的是 mingw 不是 vs,这个方法适合vs编译器 (具体可以参考:win7下的Qt环境+OpenCV视觉库) 后来,我们找到了这篇文章 QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置 但是还是有点曲折,

OpenCv学习笔记(三)---OpenCv中基本数据类型--Point,Size,Rect,Scalar,Vec3b类类型的详细解释及其OpenCv中源代码的详细分析

/********************************************************************************************* 程序功能: OpenCv的基本数据结构源代码的解读,我们常用的OpenCv的基本数据结构有六种: 1--Point类 2--Size类 3--Rect类 4--Scalar类 5--Vec3b--向量模板类 6--Range类 编写环境: OpenCv2.4.8+VS2010 地点时间: 陕西师范大学 201

OpenCv学习笔记(一)----OpenCv中Mat类源码的详细解读(2)

(一)像素存储的方法 1--本节我们讲解如何存储像素,存储像素值,需要指定: 1--颜色空间 2--数据类型 2--其中,颜色空间是指针对一个给定的颜色,如何组合颜色以其编码. 3--最简单的颜色空间是----灰度级空间----只需要处理:黑色和白色,对它们进行组合便可以产生不同程度的灰 色(256灰度级) 4--对于彩色方式---则有更多种类的颜色空间,但不论那种方式,都是把颜色分成:三个或者四个---基元素,通过 组合基元素,就可以产生所有的颜色 1--RGB颜色空间是最常用的一种颜色空间,

OpenCv学习笔记(七)---OpenCv中的基本绘图函数,圆,椭圆,线段,矩形,多边形的绘制(1)

(一)本节教程的目的 本节你将学到: 1--如何使用Point在图像中定义2D点 2--如何以及为何使用Scalar 3--用OpenCv的函数Line绘直线 4--用OpenCvd的函数ellipse绘制椭圆 5--用OpenCv的函数rectangle绘矩形 6--用OpenCv的函数circle绘圆 7--用OpenCv的函数fillPoly绘填充多边形 (二)原理,本节我们将大量使用Point和Scalar这两个结构: **********************************

[OpenCV学习笔记1][OpenCV基本数据类型]

CvPoint基于二维整形坐标轴的点typedef struct CvPoint{int x; /* X 坐标, 通常以 0 为基点 */int y; /* y 坐标,通常以 0 为基点 */}CvPoint;/* 构造函数 */inline CvPoint cvPoint( int x, int y );/* 从 CvPoint2D32f 类型转换得来 */inline CvPoint cvPointFrom32f( CvPoint2D32f point ); CvPoint基于二维整形坐标轴

OpenCV学习笔记一 OpenCV 2.49 + Eclipse 配置教程

1.安装opencv库 1.1 双击opencv-2.4.9.exe,安装到指定目录. 1.2安装VC2010运行库,百度搜索VC2010运行库,下载安装即可.如果完成下面的所有配置之后运行程序时提示还缺少dll等文件,需要用360修复,进入人工服务,搜索提示缺少的dll文件,点击修复即可. 1.3将opencv\build\x86\vc11路径下的bin.lib.staticlib三个文件夹的路径添加到环境变量中. 2.配置Eclipse 2.1 新建一个工程file -> new -> c

Opencv学习笔记(六)SURF学习笔记

原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7392345 本人挺菜的,肯定有非常多错误纰漏之处 ,希望大家不吝指正. 看了harris角点检測之后,開始研究SURF角点检測,发现挺复杂的,一时也仅仅了解了大概,把了解的东西总结下,以便下次深入学习. SURF角点检測算法是对SIFT的一种改进,主要体如今速度上,效率更高.它和SIFT的主要差别是图像多尺度空间的构建方法不同. 在计算视觉领域,尺度空间被象征性的表述

opencv学习笔记(四)投影

opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: 1 #include <cv.h> 2 #include <highgui.h> 3 using namespace std; 4 using namespace cv; 5 int main() 6 { 7 IplImage * src = cvLoadImage("cat.png", 0); //强制转化读取图像为灰度图 8 cvShowImage("灰度图像", s

opencv学习笔记(03)——遍历图像(迭代器法)

1 #include <opencv2\highgui\highgui.hpp> 2 #include <opencv2\imgproc\imgproc.hpp> 3 #include <opencv2\core\core.hpp> 4 5 void colorReduce(cv::Mat& img, int div=64); 6 7 8 int main() 9 { 10 cv::Mat img_orginal = cv::imread("F:\\i

OpenCV学习笔记[3]Java Demo人脸识别

OpenCV学习笔记:Java Demo人脸识别 [简介] 我记得在很久以前,CSDN似乎搞过一个活动,给一个橘子林的照片,让程序计算相片里有多少个橘子.之所以对这个问题记忆犹新,是因为在专业学习初期,相比于排序遍历搜索等简单算法而言,"图像识别"算法一直是难以理解的东西,而我偏偏又痴迷于此,不管自己多么无知,对于令我迷惑的问题总是充满着解决的渴望. 通过对OpenCV的初步了解,我发现图像识别的很多问题都可以用它方便的解决,本次将是一个来自官方的人脸识别的实例,我们提供图像,使用内置