目录
1、OpenCV概念
(1)OpenCV 的介绍
(2)图像处理(Image Processing)
(3)OpenCV的架构和核心模块
2、开发环境搭建
3、代码与演示
1、OpenCV概念
(1)OpenCV 的介绍
OpenCV是计算机视觉开源库,主要算法涉及图像处理和机器学习相关方法;
OpenCV 的全称是 Open Source Computer Vision Library , 直译就是“开源计算机视觉库”。取代表开源的单词“Open”、“Computer ” 的首字母“C” 以及“ Vision ”的首字母“V”,组合命名为 OpenCV 。
OpenCV(open source computer vision library)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上,能够快速的实现一些图像处理和识别的任务。
它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV 还提供 MLL ( Machine Learning Library ) 机器学习库。该机器学习库主要用于统计方面的模式识别和聚类( clustering )。
(2)图像处理(Image Processing)
图像处理:是用计算机对图像进行分析, 以达到所需结果的技术, 又称影像处理。
图像处理技术一般包括图像压缩, 增强和复原, 匹配、描述和识别 3 个部分。
图像处理一般指数字图像处理( Digital Image Processing )。其中, 数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组。该数组的元素称为像素,其值称为灰度值。而数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。
(3)OpenCV的架构和核心模块
核心模块:(最主要是2和3)
1)HighGUI部分:简称 highgui
高层 GUI 图形用户界面,可用于处理所有高级用户界面操作,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。
它有一个等待功能,可以等你按下键盘上的一个键才进入下一步。还有一个可以检测鼠标事件的功能,在开发交互式应用程序时非常有用。
2)Image Process:简称 imgproc
图像处理模块。包含如下内容:
线性和非线性的图像滤波、图像的几何变换、其他图像转换、直方图相关、结构分析和形状描述、运动分析和对象跟踪、特征检测、目标检测等内容
可以执行诸如图像过滤、形态学操作、几何变换、颜色转换、图像绘制、直方图、形状分析、运动分析、特征检测等操作。
3)2D Features:简称 featurn2d
人类视觉系统倾向于从给定场景中提取主要特征,然后记住它,这样便于后续的检索。为了模仿这一点,人们开 始设计各种特征提取器,用于从给定的图像中提取出这些特征点。
4)Camera Calibration and 3D reconstruction:简称 calib3d
这个模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单个立体摄像头标定、物体姿态估计、立体相似性算法、3D 信息的重建等。
5)Video Analysis:简称 video
视频分析包括诸如分析视频中连续帧之间的运动、跟踪视频中的不同目标、创建视频监控模型等任务。该模块包括运动估计、背景分离、对象跟踪等视频处理相关内容。
6)Object Detecyion:简称 objdetec
目标检测模块,包含 Cascade Classification (级联分类)和 Latent SVM 这两个部分。对象检测是指检测给定图像中对象的位置。此过程与对象类型无关。
如果你设计一个椅子检测器,它不会告诉你给定图像中的椅子是高靠背红色的,还是蓝色低靠背的,它只会告诉你椅子的位置。
7)Machine Learning:简称 ml
机器学习模块,基本上是统计模型和分类算法,包含如下内容:
统计模型( Statistical Models)、 一般贝叶斯分类器(Normal Bayes Classifier)、 K-近邻(K-Nearest Neighbors) 、支持向量机(Support Vector Machines) 、决策树(DecisionTrees)、 提升(Boosting) 、梯度提高树(Gradient Boosted Trees) 、随机树(Random Trees) 、超随机树(Extremely randomized trees) 、期望最大化(Expectation Maximization)、 神经网络(Neural Networks)
MLData 它还有一个名为快速近似最近邻搜索库(Fast Approximate Nearest Neighbor Search Library,简称 FLANN)的模块,其中包含用于在大型数据集中进行快速最近邻搜索的算法。
8)GPU加速
需要付费就会加速。
2、开发环境搭建
(1)下载VS对应版本
(2)OpenCV3.1.0,或者按需下载版本
下载好对应的版本,直接解压到目标路径即可
(3)配置环境变量和在VS中引入头文件、库文件、链接库
添加环境变量,前面注意加;号
;D:\WorkSpace\OpenCV\opencv\build\bin
头文件:include
D:\WorkSpace\OpenCV\opencv\build\include
D:\WorkSpace\OpenCV\opencv\build\include\opencv
D:\WorkSpace\OpenCV\opencv\build\include\opencv2
库文件:lib
D:\WorkSpace\OpenCV\opencv\build\x64\vc14\lib
链接器 —— 输入
opencv_world310d.lib
1)编辑配置环境变量
2)VS中引入头文件、库文件、链接库
打开VS的项目属性:
3、代码与演示
加载一张图片,并显示出来。
成功加载后,也证明环境的搭建是成功的。
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace cv;
int main(int argc, char** argv)
{
// 加载图像
Mat src = imread("test.jpg");
if (src.empty())
{
printf("could not load image...\n");
return -1;
}
// 创建窗口
namedWindow("test opencv setup", CV_WINDOW_AUTOSIZE);
// 显示图像
imshow("test opencv setup", src);
// 等待按键
waitKey(0);
// 关闭窗口
destroyAllWindows();
return 0;
}