OpenCV的安装配置以及其它预备介绍
OpenCV安装配置
暂且使用了VS2013+OpenCV3.0版本。
至于下载就忽略不计。
Pre介绍:
[PATH可以理解为计算机寻找某文件时的路径]
包含目录:告诉VC去什么地方寻找(OpenCV)的头文件.h文件
库目录:告诉VC去什么地方寻找OpenCV的库文件.lib文件,是动态库
第一步 配置环境变量(PATH):
计算机→属性→高级系统设置→高级→环境变量→PATH→变量中添加相应的路径(.bin的路径)
第二步 包含文件目录的配置:
文件→新建→项目→win32→空项目→cpp→....→VC++(包含目录)
然后加上opencv的include,opencv,opencv2三个路径
第三步 lib目录的配置:
也是在VC++目录中选择库目录加上相应的lib
其他相关介绍
命名空间
OpenCV中的C++类和函数都是定义在命名空间cv之内的,有两种方法可以访问。第一种是,在代码开头的适当位置,加上usingnamespace cv;这句。
另外一种是在使用OpenCV类和函数时,都加入cv::命名空间。不过这种情况难免会不爽,每用一个OpenCV的类或者函数,都要多敲四下键盘写出cv::,很麻烦。
OpenCV模块概览
OpenCV库自2.2版本起就被划分成多个模块,在进行开发之前,需要将这些模块编译成库文件,然后在lib文件夹中找到这些模块:
opencv_core模块:其中包含OpenCV基本数据结构、动态数据结构、绘图与数组操作的相关函数、辅助功能与系统函数、基本的算法函数等核心功能。
opencv_improc模块:包含图像处理函数,主要包含图像滤波、图像的几何变换、直方图、特征检测、目标跟踪等内容。
opencv_highgui模块:高层GUI图形用户界面,包含媒体的I/O输入输出函数,读写图像及视频的函数,以及操作图形用户界面函数。
opencv_features2d模块:即2D功能框架,包含兴趣点检测子,描述子以及兴趣点匹配框架。
opencv_calib3d模块:Calibration(校准)加3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容,包含相机标定,双目几何估计,物体姿态估计以及立体视觉等函数。
opencv_video模块:包含运动估算,特征跟踪以及前景提取函数与相关的类。
opencv_objdetect模块:主要由级联分类(Cascade Classification)和Latent SVM这两个部分。其中包括物体检测函数,如脸部和行人检测。
opencv_stitching模块:OpenCV2.4.0新增的模块,其主要功能是实现图像拼接。
lopencv_superres模块:即SuperResolution,利用多种算法实现超分辨率技术的相关功能模块。
opencv_ml模块:Machine Learning模块,主要包括统计模型 (Statistical Models)、一般贝叶斯分类器 (Normal Bayes Classifier)、K-近邻 (K-NearestNeighbors)、支持向量机 (Support Vector Machines)、决策树 (Decision Trees)、提升(Boosting)、梯度提高树(Gradient Boosted Trees)、随机树 (Random Trees)、超随机树 (Extremely randomized trees)、期望最大化 (Expectation Maximization)、神经网络 (Neural Networks)等内容。
opencv_flann模块:高维的近似近邻快速搜索算法库, 主要由两个部分组成:快速近似最近邻搜索和聚类。
opencv_contrib模块:第三方代码,包括一些新添加的不太稳定的可选功能,如新型的人脸识别、立体匹配、人工视网膜模型等技术。
opencv_nonfree模块:包含一些拥有专利的算法,如SIFT、SURF函数源码。
这些模块都对有一个单独的头文件(位于include文件夹)。#include<opencv2/opencv.hpp>
OpenCV简单读入输出
1.读入图片:
1,定义Mat类型的变量
2,使用imread进行赋值
example:Mat myimage=imread("1.jpg");
2.读入视频:
两种方法 一种为先实例化然后初始化 第二种为实例化的同时初始化
1,先实例化然后初始化
VideoCapture capture;
capture.open("1.avi");//调用open成员函数
2,实例化的同时初始化
VideoCapture capture(“”1.avi“”);//调用构造函数实例化
显示每一帧
while (1)
{
Mat frame;
capture >> frame;//读取当前帧
imshow("读取视频", frame);
waitKey(30);
}