第1章 邂逅OpenCV
1.1 OpenCV周边概念认知
1.图像处理(Image Processing):计算机对图像进行分析,以达到所需结果的技术,又称影像处理。侧重处理。
2.图像处理技术:图像压缩,增强和复原,匹配、描述和识别3个部分。
3.数字图像:工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组。数组元素为像素,值为灰度值。
4.数字图像处理(Digital Image Processing):通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。
5.计算机视觉(computer vision):用摄影机和电脑替代人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,用电脑处理使之成为更合适人眼观察或传送给仪器检测的图像的一门学科。侧重模拟。
6.OpenCV(Open Source Computer Vision Library):一个基于开源发行的跨平台计算机视觉库。可以运行在多种操作系统上,由一系列C函数和C++类构成,还支持C#、Ch7、Ruby等编程语言,同时提供Python、Ruby、MATLAB等语言的接口。
OpenCV应用:人机交互、物体识别、图像分区、人脸识别、动作识别、运动跟踪、机器人
1.2 OpenCV基本构架分析
1.\opencv\build\include目录:opencv、opencv2文件夹分别包含旧版、新版头文件
2.opencv2文件夹中:opencv_modules.hpp的hpp文件存放OpenCV2中与新模块构造相关的代码说明,定义了OpenCV2所有组件的宏。
3.OpenCV所有模块:
(1)【calib3d】–Calibration(校准)和3D,相机校准和三维重建,包括基本的多视角集合算法、单个立体摄像头标定、物体姿态估计、立体相似性算法、3D信息的重建。
(2)【contrib】–Contributed/Exprimental Stuf,新型人脸识别、立体匹配、人工视网膜模型等技术。
(3)【core】–核心功能模块,包含OpenCV基本数据结构、动态数据结构、绘图函数、数组操作相关函数、辅助功能与系统函数和宏、与OpenGL的互操作。
(4)【imgproc】–图像处理模块,包含线性和非线性的图像滤波、图像的几何变换、其他图像变换、直方图相关、结构分析和形状描述、运动分析和对象跟踪、特征检测、目标检测等。
(5)【features2d】–2D功能框架,包含特征检测和描述、特征检测器(Feature Detectors)通用接口、描述符提取器(Descriptor Extractors)通用接口、描述符匹配器(Descriptor Matchers)通用接口、通用描述符(Generic Descriptor)匹配器通用接口、关键点绘制函数和匹配功能绘制函数。
(6)【flann】–Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库,包括快速近似最近邻搜索、聚类。
(7)【gpu】–运用GPU加速的计算机视觉模块
(8)【highgui】–高层GUI图形用户接口界面,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等。
(9)【legacy】–废弃代码库
(10)【ml】–Machine Learning,机器学习模块,统计模型和分类算法
(11)【nonfree】–一些具有专利的模块,包含特征检测和GPU相关的内容
(12)【objdetect】–目标检测模块,包含Cascade Classifacation(级联分类)和Latent SVM
(13)【ocl】–OpenCL-accelerated Computer Vision,运用OpenCL加速的计算机视觉组件模块
(14)【photo】–Computational Photography,包含图像修复和图像去噪
(15)【stitching】–images stitching,图像拼接模块,包含拼接流水线、特点寻找和匹配的图像、估计旋转、自动校准、图片歪斜、接缝估测、曝光补偿、图片混合
(16)【superres】–SuperResolution,超分辨率技术的相关功能模块
(17)【ts】–OpenCV测试相关代码
(18)【video】–视频分析组件,包含运动估计、背景分离、对象跟踪等
(19)【Videostab】–Video stabilization,视频稳定相关的组件
1.3 OpenCV3
项目构架改变:OpenCV基本构架中,是一个相对与整体的项目,各个模块以整体的形式构建组合。而OpenCV3抛弃整体构架,使用内核+插件的构架形式。
1.4 OpenCV的下载、安装与配置
OpenCV3.4.1+visual studio 2017环境配置(永久配置版),优快云上一堆堆,选个不错的吧~
https://blog.youkuaiyun.com/weixin_42836481/article/details/81358695
1.5 OpenCV图像处理
1.图像显示
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("1.jpg");
imshow("[载入的图片]", img);
waitKey(6000);
}
2.图像腐蚀
#include<opencv2/highgui/highgui.hpp> //opencv highgui模块头文件