第1章 邂逅OpenCV
1.1 OpenCV周边概念认知
1.1.1 图像处理、计算机视觉与OpenCV
- 数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术
1.2 OpenCV基本架构分析
一些核心模块:
- core: 核心功能模块包含如下内容:
- OpenCV基本数据结构
- 动态数据结构
- 绘图函数
- 数组操作和相关函数
- 辅助功能与系统函数和宏
- 与OpenGL的互操作
- imgproc: Image和Process这两个单词的缩写组合,图像处理模块
- gpu: 运用GPU加速的计算机视觉模块
- highgui: 高层GUI图形用户界面
- ml: Machine Learning,机器学习模块,包括如下内容:
- 统计模型(Statistical Models)
- 一般贝叶斯分类器(Normal Bayes Classifier)
- K-近邻(K-Nearest Neighbors)
- 支持向量机(Support Vector Machines)
- 决策树(Decision Trees)
- 提升(Boosting)
- 梯度提高数(Gradiect Boosted Trees)
- 随机数(Random Trees)
- 超随机数(Extremely randomized trees)
- 期望最大化(Expectation Maximization)
- 神经网络(Neural Networks)
- ML Data
OpenCV各版本的差异:
OpenCV2 带来全新的c++接口;通过CUDA和OpenCL实现GPU加速
OpenCV3 进行项目架构改变,使用内核+插件的架构方式;大部分方法都使用了OpenCL加速
OpenCV4 c++11编译器才能编译
OpenCL:
OpenCL是一个为异构平台编写程序的框架。编写语言基于c99。用于并行计算,加速计算。
openCV中集成了OpenCL
OpenCL和CUDA比较:
不同点:
OpenCL是通用的异构平台编程语言,为了兼顾不同设备,使用繁琐。
CUDA是nvidia公司发明的专门在其GPGPU上的编程的框架,使用简单,好入门
相同点:
都是基于任务并行与数据并行。
OpenGL是什么,为什么存在与OpenCV中
一个跨编程语言、跨平台的应用程序接口(API)的规格,它用于生成二维、三维图像。
在 2.3 之前 OpenCV 的渲染部分都是由 CPU 来实现的,不论是画线还是把图片显示到屏幕上。这有两个问题,速度慢,同时没法画> 三维物体。引入 OpenGL 是为了借助 显卡的力量,显卡比 CPU 更擅长渲染,同时显卡和 CPU 可以同时干活
第3章 HighGUI图形用户界面初步
| 函数名称 | 用途 |
|---|---|
| imread | 读取文件 |
| imshow | 显示图片 |
| namedWindow | 用于创建一个窗口 |
| imwrite | 输出文件 |
| createTrackbar | 创建一个可以调整数值的轨迹条 |
| getTrackbarPos | 获取轨迹条的当前位置 |
| SetMouseCallback | 为指定的窗口设置鼠标回调 |
第4章 OpenCV数据结构与基本绘图
Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类,可以用来创建和操作多维矩阵。
- OpenCV函数中输出图像的内存分配是自动完成的
- 使用OpenCV的c++接口时不需要考虑内存的释放问题
- 赋值运算符和拷贝构造函数(构造函数)只复制信息头
- 使用函数clone() 或者copyTo()来复制一幅图像的矩阵
4.2 常用数据结构:
| 定义 | 释义 |
|---|---|
| Point | 2维点, 支持int , Point_ Point2i Point 等价 |
| Point2f | 2维点 , 支持float |
| Point3f | 3维点 |
| Scalar | 颜色RGB |
| Size | 颜色RGB, typedef Size_ Size2i;typedef Size2i Size |
| Rect | 矩形 |
| cvtColor | 颜色空间转换 |
| Matx | 轻量级Mat,使用前规定好大小 |
| Vec | Matx的派生类,是一个以为的Matx,和vector很相似 |
OpenCV图片通道的存储顺序时BGR,而不是RGB.
4.3 基本图形的绘制
- 绘制直线
line函数 - 绘制椭圆
ellipse函数 - 绘制举行
rectangle函数 - 绘制圆形
circle函数 - 多边形
fillPoly函数


1356

被折叠的 条评论
为什么被折叠?



