OpenCV介绍
-
Python安装OpenCV :对于 Linux 和 Windows 操作系统,首先需要在 shell 或 cmd 中运行以下命令安装 NumPy :
pip install numpy
。然后再安装 OpenCV,可以选择仅安装主模块包 :pip install opencv-python
,或者安装完整包(包括主模块和附加模块):pip install opencv-contrib-python
。 -
OpenCV主要模块 :OpenCV 可以被划分为不同模块,其主要模块包括 core(核心模块,定义基本数据结构,包含库中所有其他模块使用的基本函数)、imgproc(图像处理模块,涵盖图像滤波、几何图像变换、颜色空间变换和直方图等)、imgcodecs(图像文件读写)、highgui(高级 GUI,提供 UI 功能接口,如创建和操作可显示的窗口、添加滑动条、处理键盘命令和鼠标事件等)、videoio(视频 I/O,视频捕获和视频编解码器的接口)、video(视频分析模块,包含背景减法、运动估计和目标跟踪算法等)、calib3d(摄像机标定和三维重建,涉及多视点几何算法、立体匹配算法、目标姿态估计、单摄像机和立体摄像机标定以及三维重建等)、features2d(二维特征框架,包括特征检测器、描述符和描述符匹配器)、objdetect(目标检测,用于检测预定义类的对象和实例,如人脸、眼睛、人和汽车等)、dnn(深度神经网络模块,包含创建新层的 API、常用层、从层构造和修改神经网络的 API、从不同深度学习框架加载序列化网络模型的功能等)、ml(机器学习库,是一组可用于分类、回归和聚类目的的类和方法)、flann(快速近似近邻库,是一组非常适合快速近邻搜索的算法,用于多维空间中的聚类和搜索)、photo(计算摄影,提供一些计算摄影的函数)、stitching(图像拼接,实现自动拼接全景图像的拼接流水线)、shape(形状距离和匹配模块,可用于形状匹配、检索或比较)、superres(超分辨率,包含可用于提高分辨率的类和方法)、videostab(视频稳定,包含用于视频稳定的类和方法)、viz(三维可视化工具,用于显示与场景交互的小部件)。
-
OpenCV应用场景 :OpenCV 可应用于二维和三维特征提取、街景图像拼接、人脸识别系统、手势识别、人机交互、动作识别、物体识别、自动检查和监视、分割与识别、医学图像分析、运动跟踪、增强现实、视频 / 图像搜索与检索、机器人与无人驾驶汽车导航与控制、驾驶员疲劳驾驶检测等诸多场景。
OpenCV图像处理基础
-
图像基础
-
图像处理中的主要问题 :图像可看作三维世界的二维视图,数字图像由像素表示。计算机视觉目标是将 2D 数据转换为新数据表示、决策目标、目标结果或信息提取。图像处理中常见问题有图像的模糊性(因透视影响导致视觉外观变化)、受自然因素(光照、天气、反射和运动等)影响、部分对象被遮挡(使被遮挡对象难以检测或分类)等。以人脸检测系统为例,需考虑光照、天气、头部运动、戴眼镜或太阳镜等对算法的影响,需使用大量测试图像验证算法,按测试图像困难程度分类以提高算法鲁棒性。
-
图像处理流程 :完整的图像处理程序通常分为读取图像(从相机、视频流、磁盘、在线资源等获取)、图像处理(应用图像处理技术实现功能,如检测图像中的猫)和显示结果(以人类可读方式呈现处理结果,如绘制边界框或保存到磁盘)三个步骤。其中,图像处理又可进一步分为低层处理(预处理,输入输出均为图像,如噪声消除、图像锐化等)、中层处理(提取预处理后图像的主要特征,输出某种图像表示)和高层处理(接受中层处理得到的图像特征并输出最终结果,如检测到的人脸)。
-
-
像素、颜色、通道、图像和颜色空间
-
图像描述 :图像可描述为 2D 函数 f(x,y),其中 (x,y) 是空间坐标,f(x,y) 是图像在点 (x,y) 处的亮度或灰度或颜色值。当 f(x,y) 和 (x,y) 值都是有限离散量时,该图像为数字图像,此时 x∈0,h−1,h 为图像高度;y∈0,w−1,w 为图像宽度;f(x,y)∈0,L−1,对于 8 位灰度图像,L=256。彩色图像需定义三个函数分别表示红色、绿色和蓝色值,黑白图像仅需一个函数,f(x,y) 只能取两个值,通常 0 表示黑色、1 表示白色。
-
图像文件类型 :OpenCV 支持多种文件格式及扩展名,如 Windows bitmaps(*.bmp 和 *.dib)、JPEG files(*.JPEG、*.jpg 和 *.jpe)、JPEG 2000 files
-