OpenCV3编程入门笔记(一)
---恢复内容开始---
图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别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编程入门笔记(一)的更多相关文章
- OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图
图像载入.显示.保存函数: 1 图像载入函数:imread() Mat imread(const string& filename, int flags=1); const ...
- OpenCV3编程入门笔记(6)自我验证各函数程序代码
// asw.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2/opencv.hpp> usi ...
- OpenCV3编程入门笔记(5)重要章节小节及核心函数
- OpenCV3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换
腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RE ...
- OpenCV3编程入门笔记(3)线性滤波、非线性滤波、图像深度、通道
15 遍历图像中的像素,是先for行数后for列数的,也就是一列一列的遍历,matlab中是从1开始计数,opnecv中采用c语言的从0开始计数. 矩阵归一化:normalize()函数,参数 ...
- OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道
11 绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...
- OpenCV3编程入门.记录
ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...
- OpenCV3编程入门读书笔记5-边缘检测
一.边缘检测的一般步骤 1.滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能. 2.增强 增强边缘的基础是确定图像各 ...
随机推荐
- MySQL5.7: datetime
-- 当前日期时间 select now(); select now(3);-- 保留3位毫秒数 SELECT NOW(6); -- 保留6位毫秒数 -- 当前日期和时间 至秒 select curr ...
- CsQuery中文编码乱码问题
一.问题描述 InnerHTML 中文显示为Модель 二.解决方法 在初始化CQ对象前,先设置执行以下语句: CsQuery.Config.HtmlEncoder = CsQuery.HtmlEn ...
- SQL server分离和附加数据库
下文是参考网友的文章结合自身的经验来总结的 应用于将数据库更改到同一计算机或不同计算机的不同SQL server实例中,或者要移动数据库文件存储的位置时. 一.分离数据库 将数据库从SQL serve ...
- KMP算法详解-彻底清楚了(转载+部分原创)
引言 KMP算法指的是字符串模式匹配算法,问题是:在主串T中找到第一次出现完整子串P时的起始位置.该算法是三位大牛:D.E.Knuth.J.H.Morris和V.R.Pratt同时发现的,以其名字首字 ...
- SQL Server 锁实验(SELECT加锁探究)
本例中使用begin tran和with (holdlock)提示来观察SQL Server在select语句中的锁. 开启事务是为了保证时间极短的查询也能观察到锁情况,holdlock相当于开启序列 ...
- 日志记录模块logging
在python中,日志记录显示有两种方式,一种是保存在文件和打印屏幕上,一种保存在文件中. 第一种,直接保存在文件中. import logging #日志模块,方便记录日志 # 下面是配置日志记录格 ...
- MySQL Host is blocked because of many connection errors 解决方法
应用日志提示错误:create connection error, url: jdbc:mysql://10.45.236.235:3306/db_wang?useUnicode=true&c ...
- tesseract-ocr安装问题
今天安装tesseract-ocr的时候,载了坑,记录一下. 1. 安装时语言库的选择,我把 aditional language data 这一项全选中了,装的时候那叫一个慢啊,差不多3个小时装好的 ...
- 常用的几条sql语句
### 常用的几条sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,v ...
- Linux 小知识翻译 - 「syslog」
这次聊聊「syslog」. 上次聊了「日志」(lgo).这次说起syslog,一看到log(日志)就明白是怎么回事了.syslog是获取系统日志的工具. 很多UINIX系的OS都采用了这个程序,它承担 ...