OpenCV 2.4.9 学习笔记(1)—— 基本功能结构

摘要:
一些关于OpenCV的学习笔记,作为记录,以免自己忘了。目前最新版本应该是OpenCV3.0,alpha版和beta版都有了,我目前是用的2.4.9,3.0版本貌似有不少3D还有GPU相关的更新,很不错,关于3.0版本的后面再学习。OpenCV2.xAPI还是一个完全C++API,当然也有支持其他一些语言的接口版本。API说明命名空间:cv,所有的OpenCV的方法和函数都需要使用这个命名空间。

一些关于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 。如:

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

或者这样也行:

1 #include "opencv2/core/core.hpp"
2 using namespacecv;
3 ...
4 Mat H = findHomography(points1, points2, CV_RANSAC, 5);
5 ...

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

1 Mat a(100, 100, CV_32F);
2 randu(a, Scalar::all(1), Scalar::all(std::rand()));
3 cv::log(a, a);
4 a /= std::log(2.)

免责声明:文章转载自《OpenCV 2.4.9 学习笔记(1)—— 基本功能结构》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Wget下载终极用法和15个详细的例子angularJS实现无刷新文件下载下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

2019年的第一场雪来的既猛又烈,突然想分享点东西

清晨起床,震惊了,窗外一片雪白,大雪纷飞,我承认我词穷了,说再多话也描述不了此刻的大好心情。所以,话不多说,先上一张朋友圈的图吧! 趁着这么“好的”天气以及这么好的心情突然想写点东西记录一下自己的2018这一年以及2019年的这一天以及对.NET Core的看法。 俗话说“瑞雪兆丰年”,其实我想说这句话说得很对,为什么说很对呢?下面我就好好说道说道! 作...

Maven 梳理 -多模块 vs 继承

Maven提高篇系列之(一)——多模块 vs 继承     这是一个Maven提高篇的系列,包含有以下文章:    Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) Maven提高篇系列之(三)——使用自己的Repository(Nexus) Mave...

[OpenCV] Ptr类模板

1.C++泛型句柄类我们知道在包含指针成员的类中,需要特别注意类的复制控制,因为复制指针时只复制指针中的地址,而不会复制指针指向的对象。这将导致当两个指针同时指向同一对象时,很可能一个指针删除了一对象,另一指针的用户还认为基础对象仍然存在,此时就出现了悬垂指针。 当类中有指针成员时,一般有两种方式来管理指针成员 :一是采用值型的方式管理,每个类对象都保留一...

基于opencv图片切割

  基于opencv图片切割为n个3*3区块 工作原因,切割图片,任务急,暂留调通的源码,留以后用. packagecom.rosetta.image.test; importorg.opencv.core.Core; importorg.opencv.core.Mat; importorg.opencv.core.Rect; importorg....

Asp.Net Core 中 Host 与 WebHost的区别

最近开发包含asp.net core 2.1和3.0,其中主机的创建方式有两种,这里整理一下其不同 asp.net core 2.1 public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHost...

Opencv | 图形学 | Mingw64 | 如何正确地用MinGW64编译与配置vscode的Opencv环境

如何正确地用MinGW64编译与配置vscode的Opencv环境 1.前情提要 最近有关于图形学的授课,教授开始布置的上机打码的代码实现作业了。虽说教授为了让我们省心,直接就整了个环境已经配置好的几个G的虚拟机给我们用。但是你也懂的,虚拟机打码,卡得要命。一开始还以为会用到什么高级的库,看了下就是个Eigen3和Opencv,对于Opencv,感觉自己手...