与OpenCV的第一天
2017-01-16 本文已影响301人
Code_r_Wang
第一件事:下载与配置:
我主要用mac来开发所以这里只记录mac系统下的环境配置
1.准备
没安装Homebrew的话,需要先安装Homebrew。mac系统自带Ruby,使用一条Ruby命令即可。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装wget
brew install wget
安装cmake(以后会用到)
brew install cmake
2.下载
可以先搜索一下
brew search opencv
会发现有两个结果
homebrew/science/opencv
(这个是OpenCV2.x)
homebrew/science/opencv3
(这个是OpenCV3)
输入如下命令就可以下载了
brew install homebrew/science/opencv3
完成之后在目录 /usr/local/Cellar 下可以找到(可以把这个目录添加到左侧个人收藏里方便下次使用)
OpenCV所在目录
3.新建项目及配置
- 打开Xcode并创建新的项目
- 项目类型可以选择 Command Line
- 语言选择C++
- 设置库检索路径
- 添加C++标准库和OpenCV库
- 运行测试代码
#include <opencv2/opencv.hpp>
int main(int argc, const char * argv[]) {
printf("\t当前使用的 OpenCV 版本为 OpenCV " CV_VERSION "\n");
cv::VideoCapture capture(0);
while (1) {
cv::Mat frame;
capture>>frame;
cv::Mat edge,grayImg;
cv::cvtColor(frame, grayImg, cv::COLOR_BGR2GRAY);
cv::blur(grayImg, edge, cv::Size(3,3));
cv::Canny(edge, edge, 3, 9, 3);
cv::imshow("边缘", edge);
cv::waitKey(30);
}
return 0;
}
正确运行,配置完成
第二件事:OpenCV基本架构分析
进入到 OpenCV 的 include 目录下,会发现有 opencv 和 opencv2 两个文件夹
-
opencv 文件夹
在这个文件夹里,可以看到如下的头文件。这些是 OpenCV 1.0 中核心的部分,被保留了下来。
-
opencv2 文件夹
这个文件夹里包含的是具有划时代意义的OpenCV2系列的头文件。
模块 | 介绍 |
---|---|
calib3d | Calibration 和 3D 的组合缩写,相机校准和三维重建模块,包括: 1. 多视角几何算法; 2. 单个立体摄像头标定; 3. 物体姿态估计; 4. 立体相似性算法; 5. 3D信息的重建 等内容。 |
core | 核心功能模块,包括: 1. OpenCV 基本数据结构; 2. 动态数据结构; 3. 绘图函数; 4. 数组操作相关函数; 5. 辅助功能与系统函数和宏; 6. 与 OpenGL 的互操作。 |
features2d | 2D功能模块,包括: 1. 特征检测和描述; 2. 特征检测器(Feature Detectors)通用接口; 3. 描述符提取器(Descriptor Extractors)通用接口; 4. 描述符匹配器(Descriptor Matchers)通用接口; 5. 通用描述符(Generic Descriptor)匹配器通用接口; 6. 关键点绘制函数和匹配功能绘制函数。 |
flann | Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库,包括: 1. 快速近似最近邻搜索; 2. 聚类。 |
highgui | 图形用户界面模块 |
imgcodecs | Image file reading and writing ,图像文件的读写操作。 |
imgproc | Image 和 Process的缩写,图像处理模块,包括: 1. 线性和非线性的图像滤波; 2. 图像几何变换; 3. 其它图像转换; 4. 直方图相关; 5. 结构分析和形状描述; 6. 运动分析和对象跟踪; 7. 特征检测; 8. 目标检测 等内容。 |
ml | Machine Learning 机器学习模块,包括: 1. 统计模型(Statistical Models); 2. 一般贝叶斯分类器(Normal Bayes Classifier); 3. K-近邻(K-Nearest Neighbors); 4. 支持向量机(Support Vector Machines); 5. 决策树(Decision Trees); 6. 提升(Boosting); 7. 梯度提高树(Gradient Boosted Trees); 8. 随机数(Random Trees); 9. 超随机数(Extremely randomized trees); 10. 期望最大化(Expectation Maximization) 11. 神经网络(Neural Networks); 12. MLData。 |
objdetect | 目标检测模块,包括: 1. Cascade Classification(级联分类) 2. Latent SVM。 |
photo | Computational Photography,包括: 1. 图像修复; 2. 图像去噪。 |
shape | Shape Distance and Matching。形状匹配算法模块,用于描述形状和比较形状。 |
stitching | images stitching,图像拼接模块,包括: 1. 拼接流水线 2. 特点寻找和匹配图像; 3. 估计旋转; 4. 自动校准; 5. 图片歪斜; 6. 接缝估测; 7. 曝光补偿; 8. 图片混合。 |
superres | SuperResolution 超分辨率技术的相关功能模块。 |
video | 视频分析组件,包括: 1. 运动估计; 2. 背景分离; 3. 对象跟踪 等相关功能。 |
videoio | 视频文件读写模块,包括摄像头、Kinect 等的输入。 |
videostab | Video Stabilization,视频稳定相关的组件。 |
OpenCV 其实就是这么多模块组合起来的一个SDK(Software Development Kit,软件开发工具包)而已。