opencv3.x+opencv_contrib安装

来源:互联网 发布:sql删除数据库字段 编辑:程序博客网 时间:2024/06/05 12:06

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


ubuntu 14.04 64位 安装Opencv3.1.0 (包含opencv_contrib模块)

据官方说法,目前还不是太稳定的算法模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边。但是这里边有很多我们经常要用的算法,比如SIFT,SURF等(在xfeatures2d 模块里边)。官网提供了说明,可以把opencv_contrib扩展模块添加编译到已安装的opencv3.0.0里边,也可以安装的时候直接把扩展模块编译进去一并安装。

Opencv3.2各个模块功能详细简介

3.2版本的模块说明:Opencv3.2模块

首先打开 opencv_modules.hpp文件,可以看到对于各个功能模块的定义如下:

/* *      ** File generated automatically, do not modify ** * * This file defines the list of modules available in current build configuration * **/#define HAVE_OPENCV_CALIB3D#define HAVE_OPENCV_CORE#define HAVE_OPENCV_FEATURES2D#define HAVE_OPENCV_FLANN#define HAVE_OPENCV_HIGHGUI#define HAVE_OPENCV_IMGCODECS#define HAVE_OPENCV_IMGPROC#define HAVE_OPENCV_ML#define HAVE_OPENCV_OBJDETECT#define HAVE_OPENCV_PHOTO#define HAVE_OPENCV_SHAPE#define HAVE_OPENCV_STITCHING#define HAVE_OPENCV_SUPERRES#define HAVE_OPENCV_VIDEO#define HAVE_OPENCV_VIDEOIO#define HAVE_OPENCV_VIDEOSTAB#define HAVE_OPENCV_WORLD

OpenCV各模块总结:

1)opencv_core模块:程序库的核心功能,特别是基本的数据结构和算法函数;(OpenCV基本数据结构,动态数据结构,绘图函数,数组操作相关函数,辅助功能与系统函数和宏,与OpenGL的互操作等)

2)opencv_imgproc模块:图像处理函数;(线性和非线性的图像滤波,图像几何变换,其它图像转换,直方图相关,结构分析和形状描述,运动分析和对象跟踪,特征检测,目标检测等)

3)opencv_highgui模块:图像、视频读写函数和部分用户界面函数;(高层GUI图形用户界面,包含媒体的I/O输入输出,视频捕捉,图像和视频的编解码,图形交互界面接口等)

4)opencv_features2d模块:特征点检测器、描述子以及特征点匹配框架;(特征检测和描述子,特征检测器通用接口,描述符提取器通用接口,描述符匹配器通用接口,通用描述符匹配器通用接口,关键点绘制函数和匹配功能绘制函数等)。

5)opencv_calib3d模块:相机标定、双视角几何估计及立体函数;(相机校准和三维重建相关内容,如多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息重建等)

6)opencv_video模块:运动估计、特征跟踪及前景提取函数和类;(视频分析组件,该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容)

7)opencv_objdetect模块:目标检测函数;(Cascade Classification级联分类器和Latent SVM等)

8)openc_ml模块:机器学习函数;(基本统计模型和分类算法)

9)opencv_flann模块:计算几何算法;(高维的近似近邻快速搜索算法库,主要是快速近似最近邻搜索和聚类)

10)opencv_gpu模块:GPU加速代码等。

11)open_photo模块:图像修复和去噪模块。

2D特征FEATURES2D

显著的特征描述符,描述符匹配器和探测器,包括以下几块内容:

1.特征的检测以及描述:包括Fast算法,MSER,ORB,BRISK,FREAK 
Feature Detection and Description 
2.特征检测器的接口 
Common Interfaces of Feature Detectors 
3.描述符提取器的接口 
Common Interfaces of Descriptor Extractors 
4.描述符匹配器的接口 
Common Interfaces of Descriptor Matchers 
5.通用描述符匹配器的接口 
Common Interfaces of Generic Descriptor Matchers 
6.关键点以及匹配的绘制函数 
Drawing Function of Keypoints and Matches 
7.物体分类:这是基于local 2D features的物体分类,有BOW训练器以及BOW分类器两个模块 
Object Categorization

图片的读写IMGCODECS

用于图片的读写。//2.4里没有这块

OpenCV3开始图片、视频编解码从highgui模块分离出来,组成了imgcodecs和videoio。Linux环境下需要注意一下,其他没啥。

图片的处理IMGPROC

1.图像滤波Image Filtering:线性和非线性,Sobel,Smooth等等一些列实用的功能函数

机器学习ML

Machine Learning机器学习模块,基本就是统计学上回归,分类以及聚类的,大致分为以下几个部分: 
1.统计模型Statistical Models 
2.一般贝叶斯分类器Normal Bayes Classifier 
3.K-近邻K-Nearest Neighbors 
4.支持向量机SVM Support Vector Machines:之前尝试过的案例:SVM案例 
5.决策树Decision Trees 
6.级联分类器Boosting 
7.梯度树Gradient Boosted Trees 
8.随机树Random Trees  <RTrees>
9.超随机树Extremely randomized trees 
10.期望最大化Expectation Maximization 
11.神经网络Neural Networks 
12.机器学习数据的形式相关MLData

如何训练以及使用见地址:机器学习官方说明 
————-3.2与2.4相比新增内容 
1.Logistic Regression:类似于SVM也是一种多分类器

其中每种算法实现的主要函数如下:

1)数据处理:主要是获得训练样本和测试样本数据等

2)分类器初始参数设置:主要是设置分类器训练前的初始参数信息等

3)训练:主要是利用1)中训练样本和2)中的相关参数,进行迭代训练,直到得到满足条件的分类器

4)预测,分类:主要是利用3)中训练得到的分类器对样本进行分类预测等。

5)分类器读写保存:主要完成从文件节点中读取分类器相关信息以及将训练得到的分类器相关信息保存到文件中等。


物体检测OBJDETECT

物体检测 
Opencv2.4包含Cascade Classification(级联分类)和Latent SVM这两个部分 
Opencv3.2所采用的方法为 
Haar Feature-based Cascade Classifier for Object Detection

OpenCV中CUAD加速模块介绍

1)cuda:CUDA-加速的计算机视觉算法,包括数据结构cuda:GpuMat,基于cuda的相机标定及三维重建等。

2)cudaarithm:CUDA-加速的矩阵运算模块。

3)cudabgsegm:CUDA-加速的背景分割模块,通常用于视频监控。

4)cudacodec:CUDA-加速的视频编码与解码。

5)cudafeatures2d:CUDA-加速的特征检测与描述模块,与features2d/模块功能类似。

6)cudafilters/:CUDA-加速的图像滤波。

7)cudaimgproc/:CUDA-加速的图像处理算法,包括直方图计算,霍夫变换等。

8)cudaoptflow/:CUDA-加速的光流检测算法。

9)cudastereo/:CUDA-加速的立体视觉匹配算法。

10)cudawarping/:CUDA-加速的快速图像变换,如透视变换、旋转、改变尺寸等。

11)cudaev/:CUDA核心功能,类似core/模块中的基础算法。


图像拼接STITCHING

OpenCV3.2增加功能

1)opencv_contrib/ccalib    全方位摄像机标定和立体三维重建 

2)opencv_contrib/sfm module    从运动信息中恢复三维场景结构

3)opencv_contrib/dpm module    改进的变形部件为基础的模型    

4)opencv_contrib/tracking module    采用核心化相关滤波实时多目标跟踪

5)opencv_contrib/text module    改进和扩展场景文字探测

6)opencv_contrib/stereo module    立体匹配的改进

7)opencv_contrib/structured_light    结构关系标定

8)opencv_contrib/aruco    运用棋盘 + ArUco库标定摄像头

9)opencv_contrib/dnn module    深度神经网络框架的通用接口的实现

10)opencv_contrib/calib3d and opencv_contrib/ximgproc    边缘意思过滤的最新进展,改进SGBM立体算法

11)opencv_contrib/xobjdetect    改进的ICF检测,WaldBoost实现

12)opencv_contrib/tracking module    多目标TLD算法跟踪

13)opencv_contrib/cnn_3dobj    3D姿态估计使用细胞神经网络

小结:

OpenCV3较OpenCV2改变

1)C风格的API完全被C++的API代替,代码更加简洁,不易出错。C++的API将更加简洁。

2)所有的算法都将继承自cv::Algorithm接口。

3)大型的模块将拆分为小的模块。


OpenCV应用层语言

Python、Java、C


OpenCV操作系统:

Windows、Linux、MacOSx、iOS、Android、WinRTx


硬件

GPU、x86、x64、ARM、MIPS


OpenCV中线程

Concurrency:Windows

GCD:MacOSx、IOS

TBB:Windows、MacOSx、Linux、Android、(WinRT)


OpenCV编程中使用的加速手段

针对GPU的加速:CUDA、OpenCL

针对x86和x64加速:OpenCL、SSE/AUX

针对ARM加速:NEON

1)TBB:并行编程,针对多线程,多核处理器。TBB主要功能:并行算法,任务调度,并行容器,同步原语,内存分配器。

2)IPP:(高度手工优化代码),多核并行,用于优化OpenCV性能。

3)OpenMP:实现跨平台共享内存式多线程并发。

4)SSE加速:主要SEE指令进行加速。

5)CUAD(统一计算架构):针对GPU编程实行并行计算。

OpenCL:架构平台编码的程序框架,异构平台可由CPU、GPU、DSP、FPGA或其他类型的处理器与硬件加速器组成。

参考:http://blog.csdn.net/yzhang6_10/article/details/50760092






0 0
原创粉丝点击