openCV3学习笔记-开门篇

1  OpenCV是什么?

OpenCV(Open Source Computer Vison Libray),是基于开源发行的计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV覆盖了计算机视觉的许多应用领域,可用于解决 人机交互,物体识别,图像分区,人脸识别,动作识别,运动追踪,机器人领域的问题。

OpenCV还提供了MLL机器学习库用于统计方面的模式识别和聚类

OpenCV法院于Intel的研究中心,并在俄罗斯得到实现和优化

出现的目的:提供一个可普遍适用的计算机视觉库

2 环境配置等

学习openCV肯定得需要很多练习,即是对一些功能的验证,也是通过一些图像视频处理等的效果的展示让我对其保持持续的热情。

首先的搭建openCV的环境,openCV的既可以在windows下开发也可以在linux下开发,但是在Linux配置开发等比windows下安逸多,我选择的Linux下!具体参照之前的博客 Linux 下openCV 3.0环境搭建总结 

3.开发之前我们先看看openCV3的整体框架,以便对其有一个初步的全面了解

因为是C++写的代码我们进入openCV源码的include目录中可以看到 有两个文件夹opencv 和opencv2 ,

在opencv文件夹是1.0版本最核心的内容 ,有以下几个文件

另外我们进入openCV2这个目录,发现里面有很多目录,我们打开openCV_modules.hpp文件发现里面定义了很多宏

#define HAVE_OPENCV_CALIB3D
#define HAVE_OPENCV_CORE
#define HAVE_OPENCV_FEATURES2D
#define HAVE_OPENCV_FLANN
#define HAVE_OPENCV_HAL
#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

可看到定义了openCV2所有组件的宏与各个目录基本对照!

  • calib3d :校准和3D,主要是相机校准和三位重建

  • contrib :人脸识别,立体匹配等(新加功能,暂不稳定)

  • core    :核心功能,包括opencv基本数据结构,动态数据结构,绘图,数组操作函数,辅助功能与系统函数和宏,与openGL的互操作

  • imgproc :Image和Process ,图像处理模块,滤波,图像转换,等

  • feature2d: 2D功能框架, 特征检测,描述符提取、匹配器,通用描述符,关键点绘制函数和匹配功能绘制函数

  • flann   :高纬的近似近领快速搜索算法库 包含:快速近似最近邻搜索和聚类

  • gpu     :运用GPU加速的计算机视觉模块

  • highgui : 高层GUI图形用户界面

  • legacy  : 一些废弃的代码库,保留下来作为向下兼容

  • ml      :机器学习模块,基本上是统计模型和分类算法

  • nonfree :一些有专利的算法模块,包含特征检测和GPU相关的内容

  • .objdetect:目标检测模块,包含级联分类和Latent SVM

  • ocl    :运用openGL加速计算视觉模块

  • photo   :包含图像修复和图像去噪两部分

  • stitching:图像拼接模块

  • superres :超分辨率技术和相关功能模块

  • ts      :openCV测试相关

  • video   :视频分析模块

  • videostab   :视频稳定相关组件


学习书籍:opencv3编程入门


你可能感兴趣的:(opencv,opencv3)