OpenCV是一个通用、开源、功能强大的图像处理和计算机视觉库。
官方网站:Home - OpenCV
1999年,加里·布拉德斯基在Intel公司创建了计算机视觉库(Computer Vision Library,CVL)项目,项目旨在提供通用的计算机视觉接口,接口用C++语言实现,以开源方式发布。
2006年10月,OpenCV 1.0版本正式发布,到目前2022年为止已经更新到4.5版本。
一、安装opencv-python版本
OpenCV-Python是由原始OpenCV C++实现的Python包装器,是OpenCV库的Python接口。
用户通过OpenCV-Python可获得两大好处:(1)代码运行速度与原始C/C ++代码一样快(因为它在后台运行的是实际C++代码);(2)用Python编写代码更容易。
OpenCV-Python需要使用NumPy库,OpenCV在程序中使用NumPy数组存储图像数据。
安装指令:
更新pip源:python -m pip install --upgrade pip
安装NumPy包:pip install numpy
安装openv-python包:pip install opencv-python
二、OpenCV主要功能及模块介绍
1、内置基本数据结构和输入输出功能
OpenCV内置了丰富的与图像处理有关的数据结构,如Image、Point、Rectangle等。 core模块实现了各种基本的数据结构。 imgcodecs模块提供了图像文件的读写功能,用户使用简单的命令即可读写图像文件。
2、图像处理操作
imgproc模块提供了图像处理操作,如图像过滤、几何图像变换、绘图、色彩空间转换、直方图等。
3、图形用户界面操作
highgui模块提供了图像的图形窗口操作功能,如创建窗口显示图像或者视频、令窗口响应键盘和鼠标事件、操作窗口中图像的某个区域等。
4、视频分析
video模块提供了视频分析功能,如分析视频中连续帧之间的运动、跟踪视频中的目标。videostab模块提供了视频稳定处理功能,可解决拍摄视频时的抖动问题。optflow模块提供了与光流操作相关的算法。
5、3D重建
calib3d模块提供了3D重建功能,可根据2D图像创建3D场景。
6、特征提取
features2d模块提供了特征提取功能,可以从2D图像中检测和提取对象的特征。
7、对象检测
objdetect和xobjdetect模块提供了对象检测功能,可在图像中检测给定图像的位置。
8、机器学习
ml模块提供了机器学习功能,包含了多种机器学习算法,如k近邻(k-Nearest Neighbors,kNN)、k均值聚类(k-Means Clustering)、支持向量机(Support Vector Machines,SVM)、神经网络(Neural Network)等。机器学习算法广泛应用于目标识别、图像分类、人脸检测、视觉搜索等。
9、深度学习
深度神经网络(Deep Neural Network,DNN)模块提供了深度学习功能。深度学习是机器学习中近几年来快速发展的一个子领域,广泛应用于语音识别、图像识别、自然语言处理、图像修复、人脸识别等。OpenCV的深度学习支持Caffe、TensorFlow、Torch、Darknet等著名的深度学习框架。
10、计算摄影。
计算摄影通过图像处理技术来改善相机拍摄的图像,如高动态范围成像、全景图像、图像补光等。photo和xphoto模块提供了与计算摄影有关的算法,stitching模块提供了全景图像算法。
11、形态分析
shape模块提供了形态分析功能,可以识别图像中对象的形状、分析形状之间的相似性、转换对象形状等。
12、人脸检测和识别
OpenCV已在face模块中实现了人脸检测、人脸特征检测和人脸识别功能。人脸检测属于对象检测,用于找出图像中人脸的位置和尺寸。人脸特征检测属于特征检测,用于找出图像中人脸的主要特征。人脸识别属于对象识别,包括从已知人脸集合中找出与未知人脸最匹配的人脸,以及验证给定人脸是否为某个已知人脸。OpenCV实现了基于Haar级联分类器和基于深度学习的人脸检测算法,以及EigenFaces、FisherFaces和局部二进制编码直方图(Local Binary Patterns Histograms,LBPH)等人脸识别算法。
13、表面匹配
surface_matching模块提供了3D对象识别算法和3D特征的姿态估计算法,用于根据图像的深度和强度信息识别3D对象。
14、文本检测和识别
text模块提供了文本检测和识别功能,用于识别和检测图像中的文本,实现车牌识别、道路标志识别、内容数字化等相关应用。