opencv主要功能及模块
-
内置数据结构和输入/输出
• OpenCV内置了丰富的与图像处理有关的数据结构,如Image、Point、Rectangle等。
• core模块实现了各种基本的数据结构。
• imgcodecs模块提供了图像文件的读写功能,用户使用简单的命令即可读写图像文件。 -
图像处理操作
imgproc模块提供了图像处理操作,如图像过滤、几何图像变换、绘图、色彩空间转换、直方图等。
-
图形用户界面操作。
highgui模块提供了图像的图形窗口操作功能,如创建窗口显示图像或者视频、令窗口响应键盘和鼠标事件、操作窗口中图像的某个区域等。
-
视频分析
video模块提供了视频分析功能,如分析视频中连续帧之间的运动、跟踪视频中的目标。videostab模块提供了视频稳定处理功能,可解决拍摄视频时的抖动问题。optflow模块提供了与光流操作相关的算法。
-
3D重建
calib3d模块提供了3D重建功能,可根据2D图像创建3D场景。
-
特征提取。
features2d模块提供了特征提取功能,可以从2D图像中检测和提取对象的特征。
-
对象检测
objdetect和xobjdetect模块提供了对象检测功能,可在图像中检测给定图像的位置。
-
机器学习
ml模块提供了机器学习功能,包含了多种机器学习算法,如k近邻(k-Nearest Neighbors,kNN)、k均值聚类(k-Means Clustering)、支持向量机(Support Vector Machines,SVM)、神经网络(Neural Network)等。机器学习算法广泛应用于目标识别、图像分类、人脸检测、视觉搜索等。
-
深度学习
深度神经网络(Deep Neural Network,DNN)模块提供了深度学习功能。深度学习是机器学习中近几年来快速发展的一个子领域,广泛应用于语音识别、图像识别、自然语言处理、图像修复、人脸识别等。OpenCV的深度学习支持Caffe、TensorFlow、Torch、Darknet等著名的深度学习框架。
-
计算摄影
计算摄影通过图像处理技术来改善相机拍摄的图像,如高动态范围成像、全景图像、图像补光等。photo和xphoto模块提供了与计算摄影有关的算法,stitching模块提供了全景图像算法。
-
形态分析
shape模块提供了形态分析功能,可以识别图像中对象的形状、分析形状之间的相似性、转换对象形状等。
-
人脸检测和识别
OpenCV已在face模块中实现了人脸检测、人脸特征检测和人脸识别功能。人脸检测属于对象检测,用于找出图像中人脸的位置和尺寸。人脸特征检测属于特征检测,用于找出图像中人脸的主要特征。人脸识别属于对象识别,包括从已知人脸集合中找出与未知人脸最匹配的人脸,以及验证给定人脸是否为某个已知人脸。OpenCV实现了基于Haar级联分类器和基于深度学习的人脸检测算法,以及EigenFaces、FisherFaces和局部二进制编码直方图(Local Binary Patterns Histograms,LBPH)等人脸识别算法。
-
表面匹配。
surface_matching模块提供了3D对象识别算法和3D特征的姿态估计算法,用于根据图像的深度和强度信息识别3D对象。
-
文本检测和识别。
text模块提供了文本检测和识别功能,用于识别和检测图像中的文本,实现车牌识别、道路标志识别、内容数字化等相关应用。
图像处理
Numpy
数据类型
使用zeros()函数创建数组
创建指定形状的数组,数组元素默认值为0,数据类型默认为float,函数参数用于指定数组的形状,示例代码如下。
使用arange()函数创建数组
创建元素值按规则递增的数组,类似于Python的range()函数,示例代码如下。
使用ones()函数创建数组
ones()函数用于创建元素值为1的数组(单位矩阵),示例代码如下。
数组的形状
数组对象的shape属性可用于查看或改变数组的形状,示例代码如下。
reshape()方法可更改数组形状,并返回更改后的新数组,示例代码如下。
resize()方法的refcheck参数为False时,可在改变形状的同时更改元素个数,示例代码如下。
np.ravel()函数可将数组转换为一维数组,示例代码如下。
##索引、切片和迭代
一维数组的索引、切片和迭代等操作与Python的列表类似,示例代码如下。
两个数组执行算术运算时,“”运算符用来计算元素乘积,“@”运算符和dot()方法用来计算矩阵乘积,示例代码如下。
NumPy数组支持“+=”“=”等赋值运算,且会用计算结果覆盖原数组,示例代码如下。
NumPy为数组提供了一些执行计算的方法,示例代码如下。
可设置axis参数以便按指定的轴执行计算,示例代码如下。