OpenCV基本架构[OpenCV 笔记0]

最近正在系统学习OpenCV,将不定期发布笔记,主要按照毛星云的《OpenCV3编程入门》的顺序学习,会参考官方教程和文档。学习工具是Xcode+CMake,会对书中一部分内容更正,并加入cmakelist的内容。

书中大部分内容来自OpenCV文档,其实比较推荐官方文档和教程

OpenCV2.4.13: http://docs.opencv.org/2.4/index.html

OpenCV安装路径下的include文件夹包含opencv和opencv2两个文件夹。opencv文件夹包含OpenCV1的头文件,opencv2文件夹包含OpenCV2的头文件。

OpenCV2模块

opencv_modules.hpp里面存放了OpenCV2所有组件的宏。按照宏定义介绍如下:

  1. [calib3d] Camera Caliberation + 3D Reconstruction;
  2. [contrib] Contributed/Experimental Stuff, 最新添加的不太稳定的功能,新增了新型人脸识别、立体匹配、人工视网膜模型等;
  3. [core] core functions, 包括OpenCV基本数据结构、绘图函数、数组操作函数、系统函数和宏、OpenGL的互操作;
  4. [imgproc] Image Processing, 包括图像滤波、图像集合变换、直方图、结构分析和形状描述、运动分析和对象跟踪、特征检测、目标检测;
  5. [features2d] 2D Features, 特征检测和通用接口,关键点绘制函数和匹配功能绘制函数;
  6. [flann] Fast Library for Approximate Nearest Neighbors, 快速近似最近邻搜索,聚类;
  7. [gpu] GPU Acceleration;
  8. [highhui] Graphical User Interface, 媒体输入输出、视频捕捉、图像和视频的编码解码、图形交互界面接口;
  9. [legacy] 废弃代码,为了向下兼容
  10. [ml] Machine Learning: Statical Model, Normal Bayes Classifier, K-Nearest Neighbors, Support Vector Machines, Decision Trees, Boosting, Gradient Boosted Trees, Random Trees, Extremely randomized trees, Expectation Maximization, Neural Networks, MLData;
  11. [nonfree] 具有专利的算法模块,包括特征检测和GPU相关,不能商用;
  12. [objdetect] object detection: Cascade Classification, Latent SVM;
  13. [ocl] OpenCL-accelerated Computer Vision;
  14. [photo] Computational Photography, 图像修复和去噪;
  15. [stitching] image stitching, 图像拼接包括:拼接流水线,特点寻找和匹配图像、估计旋转、自动校准、图片歪斜、接缝估测、曝光补偿、图片混合;、
  16. [superres] Supper Resolution;
  17. [ts] OpenCV test code;
  18. [vedio] 视频分析组件,包括运动估计、背景分离、对象跟踪等;
  19. [Vediostab] Video Stabilization.

OpenCV3的改变

OpenCV3目的是为OpenCV减重,能够选择性的去掉一些臃肿的功能模块,抛弃了整体架构使用内核+插件的结构形式。在Github中,存放着正式版的OpenCV,还有opencv_contrib和opencv_extra

opencv_extra_modules_path=/modules

将模块的地址传递给主代码,并一起编译。

时间: 2024-10-13 10:42:50

OpenCV基本架构[OpenCV 笔记0]的相关文章

OpenCV Tricks[OpenCV 笔记3]

官方例程 事例程序位于opencv-3.1.0/samples/cpp/ 目录下,可以通过编译整个工程,编译所有的Sample Code 显示当前使用的OpenCV版本 CV_VERSION为标识当前OpenCV版本的宏 printf("\t OpenCV Version: OpenCV " CV_VERSION); 头文件opencv.hpp opencv2/opencv.hpp中包含了OpenCV各模块的头文件,原则上仅写一句: #include <opencv2/openc

OpenCV(C++接口)学习笔记4-Mat::operator = 的陷阱

当我们想要将一个Mat对象的数据复制给另一个Mat对象时,应该怎么做呢? 我们发现,OpenCV提供了重载运算符Mat::operator = ,那么,是否按照下列语句就可以轻松完成对象的赋值呢? Mat a; Mat b = a; 答案是否定的! 我们可以从reference manual 中看到: Mat::operator = Provides matrix assignment operators. C++: Mat& Mat::operator=(const Mat& m) Pa

OpenCV(C++接口)学习笔记2-像素级的图像操作

1.通过成员函数at(int y, int x)访问 这种方法需要知道像素保存的格式. (1) 这是为模板类型的函数,因为一个函数的返回类型只有在运行时才会知道. (2)这个函数返回的是一个向量即Vector,故有下标的操作. image.at<uchar>(j,i)= 255; 在单通道图像中,采用以上语句可以获取图像(i,j)处的灰度值(注:先行后列,一般用j表示行(rows),i表示列(cols)).如果是灰度图像的话,只需要更改一个数据就可以了.如果是rgb图像的话,就要用"

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

OpenCV在2.0版本之后添加了C++接口函数,之前学习的都是C语言的接口函数,现在OpenCV已经发展到2.4.9版本了,所以决定学习C++接口函数,跟上节奏. 1.创建图像 cv::Mat image; 采用类cv::Mat来定义图像变量或矩阵变量. 当然你也可以指定图像的大小: cv::Mat img(240,320,CV_8U,cv::Scalar(100)); 参数CV_8U中的U代表unsigned,而S代表signed.对于三通道彩色图像可以用CV_8UC3.你也可以声明16或3

[Redhat9.0]Models-3安装备忘录之LINUX篇

[Redhat9.0]Models-3安装备忘录之MODELS-3篇(未完待续……) 2010-01-26 11:32:54|  分类: Models-3|举报|字号 订阅 写在前面:不知道是因为版本还是机器的问题,总之smoke现在进入瓶颈阶段了,僵持了N久之后导师终于坚持不下去了,现在models-3只好暂时停止,真是可惜啊.现在主攻MM5,期望不要再出什么状况,时间不是我能耗的起的啊! ----------------------------------------------------

[Spring Data Repositories]学习笔记--定义自己的repository

有时,我们会需要用到自己定义的一些查询方法,可以按照下面几步进行. 1. 定义一个包含该方法的接口 Interface UserRepositoryCustom { public void someCustomMethod(User user); } 2. 定义实现 class UserRepositoryImpl implements UserRepositoryCustom { public void someCustomMethod(User user){ //Your custom im

[Spring Data Repositories]学习笔记--为repository添加通用的方法

如果想把一个方法加到所有的repository中,用前一篇提到的方法就不合适了. 英文原版,请看 http://docs.spring.io/spring-data/data-mongo/docs/1.5.2.RELEASE/reference/html/repositories.html#repositories.custom-behaviour-for-all-repositories 1. 定义自己的repository,要从基础的repository进行继承. public interf

[Spring Data Repositories]学习笔记--使用现有的repository

以下内容是在学习Spring-Data-mongoDB中的Spring Data Repositories时做的一些笔记.备忘! 感觉学习还是看官方的资料比较透彻一些. Spring Data Repositories目的:减少重复的持久化代码. 常用的几个repository interface, Repository <-- CurdRepository <-- PagingAndSortingRepository 最后一个主要是用来做分页和排序用的. Repository使用步骤 1.

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署