一些关于OpenCV(2.4.9版本)的学习笔记,作为记录,以免自己忘了。

安装与配置

  OpenCV的下载、安装以及在各个平台(Windows/Linux等)配置网上有很多的资料,自己就不用存了。需要或者遇到问题的时候再说。

基本模块结构

  OpenCV(Open Source Computer Vision Library),一个遵循BSD协议的计算机视觉技术开源库,包含了几百个计算机视觉算法。目前最新版本应该是OpenCV3.0,alpha版和beta版都有了,我目前是用的2.4.9,3.0版本貌似有不少3D还有GPU相关的更新,很不错,关于3.0版本的后面再学习。OpenCV 2.x API还是一个完全C++ API,当然也有支持其他一些语言的接口版本。OpenCV的模块包括下面这些:

  1、core — 基础核心模块,定义了一些需要用到的基本的数据结构,包括多为数组Mat等其他的模块需要的核心对象。

  2、imgproc — 图像处理模块,包括了线性和非线性的图像滤波(Linear and Non-Linear Image Filtering)、几何图像变换(如,缩放(Resize)、仿射与透视变换(affine and perspective warping)、generic table-based remapping)、颜色空间变换( color space conversion)和直方图(histograms)等。

  3、video — 视频分析模块,包含运动估计(Motion Estimation)、背景消除/背景差分(Background Subtraction)和物体跟踪(Object Tracking)算法。

  4、calib3d — 3D图像处理方面的一个模块,包含了基本的多视角几何算法(basic multiple-view geometry algorithms)、单体和立体相机的标定(Single and Stereo Camera Calibration)、对象姿态估计(Object Pose Estimation)、双目立体匹配(Stereo Correspondence)算法和元素的三维重建(Elements of 3D Reconstruction)。

  5、features2d — 特征检测、描述、匹配算法模块,包含了显著特征检测算法(salient feature detectors)、描述算子(descriptors)和算子匹配算法(descriptor matchers)。

  6、objdetect — 目标检测模块,包括实物检测和一些预定义的物体的检测如人脸、眼睛、杯子、行人、汽车等。

  7、highgui — UI接口模块,为视频捕捉(Video Capturing)、图像和视频编码(Image and Video Codecs)等功能提供易用的UI接口。

  8、gpu — gpu模块,用于支持其他模块的GPU加速算法。

  9、ml — 机器学习模块,提供了多种基本和经典的机器学习算法,用于支持各种计算机视觉功能的实现。

  10、还有一些其他的模块,用的少或者不是很大规模,以后用到的时候再记了。

API说明

  命名空间:cv,所有的OpenCV的方法和函数都需要使用这个命名空间。使用 cv:: 符号或者 using namespace cv 。如:

 #include "opencv2/core/core.hpp"
...
cv::Mat H = cv::findHomography(points1, points2, CV_RANSAC, );
...

或者这样也行:

 #include "opencv2/core/core.hpp"
using namespace cv;
...
Mat H = findHomography(points1, points2, CV_RANSAC, );
...

  OpenCV中有些现存的或者以后新版本中会有一些命名与STL库或者其他库因同名而冲突。这种情况下,需要显示地写出命名空间 cv::,如下面所示:

 Mat a(, , CV_32F);
randu(a, Scalar::all(), Scalar::all(std::rand()));
cv::log(a, a);
a /= std::log(.)

OpenCV 2.4.9 学习笔记(1)—— 基本功能结构的更多相关文章

  1. OpenCV(C++接口)学习笔记1-图像读取、显示、保存

    OpenCV在2.0加入版本号之后C++接口函数,学习前C语言的接口功能.现在OpenCV它已被发展到2.4.9版本号,所以,我决定学习C++接口函数,与步伐. 1.创建图像 cv::Mat imag ...

  2. OpenCV 2.4.9 学习笔记(4)—— 像素类型与Templates的限制使用

    限制使用templates C++中的Templates使得接口机制非常好用,高效而且能够保证数据与算法的安全.但是过多地使用templates可能会增加计算时间和代码长度,有时候还能难区分接口和实现 ...

  3. OpenCV 2.4.9 学习笔记(3)—— OpenCV自动为输出数组(矩阵)分配内存

    OpenCV大部分时候会为OpenCV方法中的输出数据(方法的参数)自动分配内存,所以如果一个方法的参数有一个或者多个输入数组(cv::Mat 实例)和一些输出数组时,OpenCV会自动为输出数组分配 ...

  4. OpenCV 2.4.9 学习笔记(2)—— OpenCV内存自动管理

    OpenCV自动内存管理 目前版本的OpenCV是自动处理所有自己的内存的,虽然这么说也不是很严谨.OpenCV在2.0版本中引入了一个新的C++接口,利用自动内存管理给出了解决问题的新方法.使用这个 ...

  5. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置

    摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...

  6. 播放一个视频并用滚动条控制进度-OpenCV应用学习笔记二

    今天我们来做个有趣的程序实现:利用OpenCV读取本地文件夹的视频文件,并且在窗口中创建拖动控制条来显示并且控制视频文件的读取进度. 此程序调试花费了笔者近一天时间,其实大体程序都已经很快写出,结果执 ...

  7. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  8. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  9. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

随机推荐

  1. python文件操作练习之文件备份

    文件备份 ## 文件备份 # 打开文件 def backup(file1, file2): with open(file1, 'rb') as f1,\ open(file2, 'wb') as f2 ...

  2. Linux平台下安装MySQL

    1.下载RPM包 http://dev.mysql.com/downloads/mysql/5.5.html#downloads 选择[Red Hat & Oracle Enterprise ...

  3. 机器学习实战 -- 决策树(ID3)

    机器学习实战 -- 决策树(ID3)   ID3是什么我也不知道,不急,知道他是干什么的就行   ID3是最经典最基础的一种决策树算法,他会将每一个特征都设为决策节点,有时候,一个数据集中,某些特征属 ...

  4. 笔记-git-基础使用

    笔记-git-基础使用 1.      git相关概念 工作区(Working Directory): 就是在电脑里能看到的目录,init后的当前目录就是一个工作区: 版本库(Repository): ...

  5. idea录制宏

    录制一个热部署的快捷键 1.打开Edit-->Macros-->statr Macro Recording 打开之后idea右下角就会出现一个小圆点 然后就可以开始录制自己想要的快捷键 按 ...

  6. CSS3 Shape ---使用形状改变旁边内容的布局

    注意 本文所实现的功能,在浏览器的支持上并不好,除chrome浏览器外其余的大部分浏览器均不支持,虽然可以使用polyfill解决,但也不能很好的支持,有时也会出错 polyfill使用方法 下载po ...

  7. 支付宝sdk 支付订单查询失败

    最近遇到了一些问题,厂商给我们反馈了一个问题,就是支付宝支付成功之后,旋转屏幕,订单查询失败.后来我怀疑是支付宝的问题,想都不用想是支付宝的问题. 但是自己根本你无法复现,因为我发现支付宝支付完成之后 ...

  8. 微信支付 h5

    Android开发要点说明 商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID.由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付. ...

  9. android什么时候会产生ANR

    ANR: Application No Response 1.界面操作(按钮点击)等待时间超过5秒 2.HandleMessage 回调函数中执行超过10秒(进行长时间处理不放在主界面,放在另一个线程 ...

  10. 超链接标签的CSS伪类link,visited,hover,active

    CSS伪类,是一种特殊的类,它针对到CSS选择器起作用,使选中的标签或元素产生特定的效果. CSS伪类的语法就是: 选择器 : 伪类名 { 属性 : 属性值 } 用的最多的伪类就是超链接a的伪类,有: ...