opencv文件结构解析

转自:http://blog.sina.com.cn/s/blog_5c6f79380101asw1.html

1.3.1 头文件

OpenCV有许多不同的模块,每个模块关心图像处理中不同的领域及方法(参见:OpenCV学习笔记(基于OpenCV 2.4)一:哈喽CV),在使用之前我们首先需要对相应的头文件进行包含,一般情况下我们都会用到的两个模块:

1)core section. 这里定义了OpenCV的一些基本的块(Blocks);

2)highgui module. 该模块包含了一些图像的输入输出操作(UI)。

另外,为了能够在控制台做输入输出,我们会包含iostream,而string是用于字符串的处理。接下来,为了防止OpenCV的数据结构或命名与其它库函数比如STL有冲突,我们引入命名空间cv,在有冲突的情况下可以用前缀cv::来指定具体使用哪个库(关于命名空间,我们会在下一讲做详细介绍)。


0 写在最前面

        这份笔记主要记录自己一个简单的学习过程,此过程从OpenCV零基础开始到实现一个或若干个图像处理算法为止,中间可能会穿插部分自己遇到的比较典型的并认为需要记录的问题进行解析,每章节内容尽量做到简短而充实,方便学习及回顾。此外,苦于很多初学者(我也是零基础)难以找到较新版本的OpenCV的中文学习资料或文档(旧版的1.X系列与2.X系列差距巨大,2.X是重构过的),因此,这份笔记也会针对OpenCV最新版官方文档(这里基于2.4.X版)里的一些基础内容进行翻译(相信大家走过了基础期,以后再读英文文档就不会那么费劲)。笔者是国内某高校一小硕,研究方向为医学图像处理,将于2013年6月份毕业,因此,在2012年12月21世界末日到来之前,这份为零基础入门的学习笔记定会截稿,否则,小僧就毕不了业了。当然,若干月后,小僧还会遇到类似的问题或发现笔记有不妥的地方,那么,小僧也会及时更新过来的。

摘要:本文主要在以下几个方面做介绍:1) OpenCV简介,什么是OpenCV;2) OpenCV的模块结构;3) OpenCV的下载、安装、配置及使用;4)OpenCV版HelloWorld代码及详解;

关键词:OpenCV;OpenCV教程;OpenCV学习笔记;OpenCV中文教程;OpenCV下载;

1 OpenCV简介

        OpenCV(Open Source Computer Vision)是一个用于实时处理的计算机视觉函数库,它基于BSD许可证授权并且可免费用于学术研究和商业应用。它拥有C/C++、Python、和Java(仅用于Android)接口,并可在Windows、Linux、Mac和Android平台上运行。OpenCV库包含大于2500个优化算法,拥有5M的下载量和47K+的用户群体。OpenCV在现实中的应用包括视频监控(Video Surveillance)、交互艺术(Interactive Art)、矿山检查(Mine Inspection)、全景图拼接(Panorama Stitching)以及最新的机器人学(Robotics)应用【此段翻译自http://code.opencv.org/projects/OpenCV/wiki/WikiStart】。

2 OpenCV模块结构(Modular Structure)

        OpenCV拥有一个模块结构,也就是说,OpenCV包(Package)里包含数个共享的或静态的库(Libraries),分别如下【opencv\doc\opencv2refman.pdf_P1】:

core. 该模块定义了OpenCV的基本数据结构,包括多维数组(Multi-dimensional Array)和用于其它模块的基本函数;

imgproc. 该模块用于图像处理(Image Processing)。它包括线性和非线性的图像滤波(Linear and Non-Linear Image Filtering)、几何图像变换(Geometrical image Transformations),包括缩放(Resize), affine and perspective warping, generic table-based remapping、颜色空间变换(Color Space Conversion)、直方图(Histograms)等;

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

calib3d. 该模块包括基本的多视图集合算法(Multiple-View Geometry Algorithms)、单体和立体相机的标定(Single and Stereo Camera Calibration)、对象姿态估计(Object Pose Estimation)、双目立体匹配(Stereo Correspondence)算法和元素的三维重建(Elements of 3D Reconstruction);

features2d. 包括显着特征检测器(Salient Feature Detectors)、描述符(Descriptors)和描述符匹配器(Descriptor Matchers);

objdetect. 包括预定义的目标和实例的检测,如脸、眼、杯子、人以及汽车等;

highgui. 该模块拥有一个简单易用的视频捕捉(Video Capturing)、图像及视频译码(Image and Video Codecs)以及简单的UI接口;

gpu. 包含不同模块的GPU加速算法。

另外还有其它的辅助模块,比如FLANN以及Google的测试包、Python bindings等。

3 OpenCV的下载、安装、配置及使用

        本章内容可参照本站文章:OpenCV 2.3.1/2.4.0在Visual Studio 2008及Visual Studio 2010下安装及配置方法(附HelloWorld)

4 哈喽CV代码解析

        关于哈喽CV的代码解析,发现再发酵下比较好。因为早上我瞄到了OpenCV官方教程【opencv\doc\opencv_tutorials.pdf】里的章节安排,有1.9节的Load and Display an Image以及1.10节的Load, Modify, and Save an Image,因此,打算将哈喽CV代码解析单独作为一章。

你可能感兴趣的:(C++)