---恢复内容开始---

  图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。图像处理和计算机视觉的区别在于:图像处理侧重于“处理”图像——如增强、还原、去噪、分割等;而计算机视觉重点在于使用计算机来模拟人的视觉。

  OpenCV由一系列C函数和C++类构成,拥有包括500多个C函数的跨平台的中高层API。OpenCV还提供MLL机器学习库,该机器学习库主要用于统计方面的模式识别和聚类。OpenCV可用于解决如下领域的问题:人机交互、物体识别、图像分区、人脸识别、动作识别、运动跟踪、机器人。

  OpenCV基本架构分析:...\opencv\build\include目录,其中有opencv和opencv2。opencv文件夹包含旧版的头文件,而opencv2包含着新版opencv2系列的头文件。

  OpenCV所有模块:

(1)【calib3d】——该模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单个立体摄像头标定、物体姿态估计、立体相似性算法、3D信息的重建等。

(2)【contrib】——该模块新增了新型人脸识别、立体匹配、人工视网膜模型等技术。

(3)【core】——核心功能模块,包含OpenCV基本数据结构、动态数据结构、绘图函数、数组操作相关函数、辅助功能与系统函数和宏、与OpenGL的互操作。

(4)【imgproc】——图形处理模块,包含线性和非线性的图像滤波、图像的几何变换、其他图像转换、直方图相关、结构分析和形状描述、运动分析和形状描述、运动分析和对象跟踪、特征检测、目标检测等内容

(5)【features2d】——2D功能框架,包含特征检测和描述、特征检测器通用接口、描述符提取器通用接口、描述符匹配器通用接口、通用描述符匹配器通用接口、关键点绘制函数和匹配功能绘制函数

(6)【flann】——高维的近似近邻快速搜索算法库,包含快速近邻最近邻搜索、聚类

(7)【GPU】——运用GPU加速的计算机视觉模块

(8)【highgui】——高层GUI图形用户界面,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等

(9)【legacy】——一些已经废弃的代码库,保留下来作为向下兼容,包含运动分析、期望最大化、直方图、平面细分、特征检测和描述、描述符提取器的通用接口、通用描述符的常用接口、匹配器

(10)【ml】——机器学习模块,基本上是统计模型和分类算法,包含统计模型、一般贝叶斯分类器、K-近邻、支持向量机、决策树、提升、梯度提高树、随机数、超随机数、期望最大化、神经网络、MLData

(11)【nonfee】——一些具有专利的算法模块,包含特征检测和GPU相关的内容。

(12)【objdetect】——目标检测模块,包含Cascade Classification(级联分类)和Latent SVM两部分。

(13)【ocl】——运用OpenCL加速的计算机视觉组件模块

(14)【photo】——包含图像修复和图像去噪两部分

(15)【stitching】——图像拼接模块,包含拼接流水线、特点寻找和匹配图像、估计旋转、自动校准、图片歪斜、接缝估测、曝光补偿、图片混合

(16)【superres】——超分辨率技术的相关模块

(17)【ts】——OpenCV测试相关代码

(18)【video】——视频分析组件,该模块包括运动估计、背景分离、对象跟踪等视频处理相关内容

(19)【Videostab】——视频稳定相关组件

  opencv.hpp中包含了OpenCV各模块的头文件,故编写程序时,可写上“#include<opencv2/opencv.hpp>”即可。

  argc与argv参数:arg指的是“参数”,其中,argc为整数,用来统计运行程序时送给main函数的命令行参数的个数;*argv[]:为字符串数组,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。

  int argc表示命令行字串的个数;

  char *argv[]表示命令行参数的字符串。

以下是参考 http://blog.sina.com.cn/s/blog_6a0e04380100r289.html 深度和通道的理解

矩阵数据类型:

–      CV_<bit_depth>(S|U|F)C<number_of_channels>

S = 符号整型  U = 无符号整型  F = 浮点型

E.g.:

CV_8UC1 是指一个8位无符号整型单通道矩阵,

CV_32FC2是指一个32位浮点型双通道矩阵

CV_8UC1           CV_8SC1          CV_16U C1       CV_16SC1 
CV_8UC2           CV_8SC2          CV_16UC2        CV_16SC2 
CV_8UC3           CV_8SC3          CV_16UC3        CV_16SC3 
CV_8UC4           CV_8SC4          CV_16UC4        CV_16SC4 
CV_32SC1         CV_32FC1         CV_64FC1
CV_32SC2         CV_32FC2         CV_64FC2
CV_32SC3         CV_32FC3         CV_64FC3
CV_32SC4         CV_32FC4         CV_64FC4

其中,通道表示每个点能存放多少个数,类似于RGB彩色图中的每个像素点有三个值,即三通道的。

图片中的深度表示每个值由多少位来存储,是一个精度问题,一般图片是8bit(位)的,则深度是8.

---恢复内容结束---

OpenCV3编程入门笔记(一)的更多相关文章

  1. OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图

    图像载入.显示.保存函数: 1         图像载入函数:imread()   Mat imread(const string& filename, int flags=1); const ...

  2. OpenCV3编程入门笔记(6)自我验证各函数程序代码

    // asw.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2/opencv.hpp> usi ...

  3. OpenCV3编程入门笔记(5)重要章节小节及核心函数

  4. OpenCV3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换

    腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RE ...

  5. OpenCV3编程入门笔记(3)线性滤波、非线性滤波、图像深度、通道

    15     遍历图像中的像素,是先for行数后for列数的,也就是一列一列的遍历,matlab中是从1开始计数,opnecv中采用c语言的从0开始计数. 矩阵归一化:normalize()函数,参数 ...

  6. OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道

    11     绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...

  7. 【浅墨著作】《OpenCV3编程入门》内容简单介绍&amp;勘误&amp;配套源码下载

    经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...

  8. OpenCV3编程入门.记录

    ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...

  9. OpenCV3编程入门读书笔记5-边缘检测

    一.边缘检测的一般步骤 1.滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能. 2.增强 增强边缘的基础是确定图像各 ...

随机推荐

  1. es6 语法 (map、set和array 的对比)

    //数据结构对比 增查改删 { //map和array对比 let map = new Map(); let array = []; //增 map.set('t',1); array.push({t ...

  2. java map集合 --遍历

    1.Map 遍历: Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "a& ...

  3. cf55D. Beautiful numbers(数位dp)

    题意 题目链接 Sol 看到这种题就不难想到是数位dp了. 一个很显然的性质是一个数若能整除所有位数上的数,则一定能整除他们的lcm. 根据这个条件我们不难看出我们只需要记录每个数对所有数的lcm(也 ...

  4. meta、link、script的常用写法

    meta 设置编码格式 <meta charset='utf-8'> 设置关键字 <meta name="keywords" content="音乐 播 ...

  5. Git 结合Git使用Bitbucket进行代码版本管理流程规范与实践

    结合Git使用Bitbucket进行代码版本管理流程规范与实践   By:授客 QQ:1033553122   目录 目录 1 一. 测试环境 2 二. 新建项目 2 三. 新建公有版本库 3 四. ...

  6. SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析

    在SQL Server 2012(11.0.7001.0)下面在还原一个数据库(备份文件40多G大小,实际数据库大小300G),在还原过程中,出现一直等待ASYNC_IO_COMPLETION,如下测 ...

  7. Deep learning深度学习的十大开源框架

    Google开源了TensorFlow(GitHub),此举在深度学习领域影响巨大,因为Google在人工智能领域的研发成绩斐然,有着雄厚的人才储备,而且Google自己的Gmail和搜索引擎都在使用 ...

  8. SQL server 获得 表的主键,自增键

    主键: @tableName --表名 @id ---表对应的id SELECT SYSCOLUMNS.name FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSIN ...

  9. 深入理解C语言内存管理

    之前在学Java的时候对于Java虚拟机中的内存分布有一定的了解,但是最近在看一些C,发现居然自己对于C语言的内存分配了解的太少. 问题不能拖,我这就来学习一下吧,争取一次搞定. 在任何程序设计环境及 ...

  10. Syntax error, parameterized types are only available if source level is 1.5 解决方案

    在网上找了一个K-means算法的程序,打开,运行,出现了Syntax error,parameterized types are only available if source level is ...