opencv文档阅读笔记-introduction

opencv3-introduction

introduction

introduction

概论(introduction)

接口c++API

模块化结构( modular structure)

命名空间(cv namespace)

所在头文件(core.hpp)

使用cv::命名空间解决与STL的同名函数的冲突,如rand()、log()

自动内存管理(Automatic Memory Management)

普通拷贝不会复制Mat的数据,计数器加一记录

clone()可以拷贝数据

自行创建数据类型,Ptr ptr(new T(…));

输出数据的自动分配(Automatic Allocation of the Output Data)

由输入数组决定输出数组的类型和大小,Mat::create()实现

cv::mixChannels

, cv::RNG::fill
等函数不自动分配

饱和算术(Saturation Arithmetics)

作用是进行如色彩空间转换,亮度/对比度调整,锐化,复杂插值等处理后,使得产生的值最接近原图像灰度值范围

用法类似I.at(y, x) = saturate_cast(r);

32-bit整数类型不使用

固定的像素类型。有限使用模板(Fixed Pixel Types. Limited Use of Templates)

模板高效安全强大,但是对视觉算法库不适用

基本数据类型enum { CV_8U=0, CV_8S=1, CV_16U=2, CV_16S=3, CV_32S=4, CV_32F=5,

CV_64F=6 };

可自行指定多通道

数据类型限制

人脸检测算法仅适用于8位灰度或彩色图像
线性代数函数和大多数机器学习算法仅适用于浮点数组
基本功能,如cv :: add,支持所有类型
色彩空间转换功能支持8位无符号,16位无符号和32位浮点类型。

InputArray and OutputArray

为避免API重复引入的代理

错误处理(Error Handling)

cv的异常处理是std异常处理派生的

使用举例


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try

{

... // call OpenCV

}

catch( cv::Exception& e )

{

const char* err_msg = e.what();

std::cout << "exception caught: " << err_msg << std::endl;

}

多线程和可重入性(Multi-threading and Re-enterability)

不同线程可以调用相同的函数

cv::Mat可以用于不同线程

-------------本文结束感谢您的阅读-------------