1 主要内容
OpenCV是应用钢钒的开源图像处理库,本课程介绍相关图像处理方法: 几何变换,形态学变换,图像平滑,直方图操作,魔板匹配,霍夫变换;特征提取和描述方法: 理解角点特征,Harris和Shi-Tomas算法,SIFT/SURF算法,Fast算法,ORB算法;OpenCV在视频操作中的应用。
2 图像处理简介
2.1 图像是什么
‘图’ 是物体反射或透射光的分布(物体本身性质),‘像’ 是人的视觉系统所接受的图 在人脑中所形成的影响或认识。
2.2 模拟图像和数字图像
模拟图像: 通过某种物理量(光、电等)的强弱变化,来记录图像亮度信息,所以是连续变换的。模拟信号的特点是容易受干扰,如今已经全面被数字图像替代。
数字图像: 其亮度用离散数值表示
2.3 数字图像的表示
2.3.1 位数
计算机采用0/1编码的系统,数字图像利用0/1来记录信息,平时接触的图像都是8位数图像,包含0-255灰度,其中0代表黑,255代表白。
2.3.2 图像分类
(1)二值图像
二维矩阵仅由0/1两个值构成,‘0’代表黑,‘1’代表白。计算机中二值图像的数据类型通常为一个二进制位。二值图像通常用于文字、萧条图的扫描识别和掩膜的存储。
(2)灰度图
每个像素只有一个采样颜色的图像。8个二进制位,256个灰度级
(3)彩色图
每个像素由红(R)、绿(G)、蓝(B)三个分量表示,每个分量的值介于(0-255)之间。数据类型为8位无符号整型
3 OpenCV简介
定义: OpenCV是一种计算机视觉处理开源软件库,支持与计算机视觉和机器学习相关的众多算法,并且在日益扩展。
OpenCV优势:
(1)编程语言:
OpenCV基于C++实现,同时提供python、Ruby、Matlab等语言的接口,OpenCV-Python是OpenCV的Python API,结合了OpenCV C++ API和Python语言的最佳特性。
(2)跨平台
可以在不同的系统平台上使用,包括Windows、Linux、OS X、Android和ios。基于 CUDA和OpenCL的高速GPU操作接口也在积极开发中
(3)丰富的API
完善的传统计算机视觉算法,涵盖主流的机器学习算法(SKlearn),同时添加了对深度学习(tensorflow、Pytorch)的支持
OpenCV-Python:
使用numpy数组
4 OpenCV的模块
(1)基础模块:
core模块:最核心数据结构及其基本运算,如绘图、数组操作相关函数
highgui模块:视频及图像的读取、显示、存储接口
imgproc模块:实现图像处理的基本方法,包括图像滤波、图像几何变换、平滑、阈值分割、形态学处理、边缘检测、目标检测、运动分析和对象跟踪。
(2)其他模块: