opencv3.1学习笔记(1)-模块介绍

1、opencv3.1简介

最近参与一个项目需要用到opencv,这里做个笔记,一来记录下学习过程中遇到的问题,再就是有时间读一下其中部分算法的源码,看看牛人写的杰作。在windows环境下,opencv3.1仅支持x64操作系统与VS2013、VS2015,可能是支持的平台版本少了,解压之后的文件与之前版本几个G相比小了很多。这里先简单介绍一下解压之后的文件夹,在include的文件夹下有两个文件:
这里写图片描述|center|
其中opencv包含opencv1.0最核心的头文件,而我们现在只关注opencv2中的常用模块,下图便是常用头文件所在的文件夹,另外提一点就是VS的项目属性配置中可以不用再在链接器中添加对应的lib库那么麻烦,直接添加opencv_world310d.libopencv_world310.lib就可以了,这也方便解决exe跨平台使用时对各种静态库的依赖问题。
这里写图片描述| center |

2、opencv3.1主要模块作用介绍

在opencv的安装文件下opencv\sources\doc\tutorials有许多模块的示例教程,可以运行学习一下,但是有的模块示例程序在运行时可能会报错,说缺少头文件,这是因为还有一个由其它开发者提交的源文件没有编译进去。opencv_contrib这个文件需要单独下载自行编译成功之后,才能产生这些缺少的文件。安装路径opencv\sources\modules下可以浏览大部分算法的实现过程,但是仍有一部分底层东西已经被封装,是看不到的,需要cmake编译得到opencv工程才行。

2.1【core模块】

  • core模块里面的内容是整个opencv的基础,在学习过程中必须熟悉掌握此模块是如何在像素级水平进行图像处理相关的操作。core包含了各种基本数据类型的定义及cuda相关函数的封装,还有各种矩阵加减乘除等基本操作。
  • Mat基本图像容器。这是C++存储图像的基本容器,在C中用IplImage进行图像的存储,这两者在以后会经常碰到类型转换问题。
  • 像素操作直接访问图像像素。有通过C语言风格的指针访问(最有效率),还可以直接通过成员函数访问。在操作像素的时候一定要注意Mat中元素类型及图像通道数,opencv中RGB图像是按照BGR顺序存放数据的。
  • 矩阵操作。常用的一些基本矩阵运算,例如求逆、转置、点乘等操作都在这个模块当中。
  • 图像读写操作。图片的读取、保存、显示及图片数据格式转换,例如RGB图像转换为灰度图像,或者Mat元素的8位无符号整数转换为32位浮点型。
  • 绘图操作。绘制直线、椭圆、矩形等形状。

2.2【imgproc模块】

  • 图像平滑操作-包含常用中值滤波、高斯模糊等图像平滑操作。
  • 形态学操作-腐蚀、膨胀等操作。
  • 图像金字塔-在一般的多尺度特征提取过程中都会涉及到图像金字塔,其中有上采样与下采样。
  • 阈值分割法 基本的图像分割方法
  • 图像几何变换-旋转、平移等操作
  • 直方图均衡化等相关操作
  • 边缘检测算子-比如Sobel、Canny等边缘检测算子

2.3【highgui模块

  • 高层GUI图形用户界面,包含媒体的I / O输入输出,视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容

2.4【ml 模块

  • 这个模块包含常用的机器学习方法,如图中的SVM、KNN等算法
    这里写图片描述| center |

2.5【feature2d 模块]

  • 这个模块主要是2维图像的一些常用特征提取与检测过程的封装。
  • Harris角点检测器
  • 特征描述子。例如BRIEF特征描述子,用来对提取的特征进行描述。
  • 特征匹配方法使用快速有效的特征匹配方法 cv::FlannBasedMatcher。
  • 其中还包含其它常用的特征,比如ORB、FAST等特征。而像SIFT、SURF两种特征已经被申请为专利,必须得到许可才可以使用。解压之后的opencv默认不包含这些特征,需要我们通过cmake将opencv_contrib源文件与opencv source文件重新编译一次得到nonfree.hpp才可以学习使用。

2.6【video分析模块]

  • 视频分析组件,该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容。

2.7【目标检测模块]

  • 在opencv中已经内置训练好的人脸检测模型参数,可以直接使用。它还可以在多个尺度下进行目标的检测,具有一定的尺度不变性。

3、opencv contrib模块

可能由于部分功能的性能测试不过关,还有涉及到专利问题,opencv的默认安装中是不包含这一部分,需要自己去 github 上下载编译,具体过程还比较麻烦,可以参考网上的教程。话说我编译了好几遍还是有几个项目编译不过去,只得到一个包含了大部分功能的版本,可能是有部分功能不被我的机器支持。这里给出一个介绍编译过程的博客http://www.cnblogs.com/Geo-fortune/p/4822997.html,不同的机器可能会有各种不同问题,祝好运!
编译完成之后就可以看到很多之前opencv不存在的文件了,大部分都是带”opencv_x”作为前缀,比如下面四个工程下的内容:
这里写图片描述
SIFT、SURF就在xfeature2d工程下的nonfree.hpp中,如下:
这里写图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值