Mat
具有两个数据部分的类:矩阵头(包含矩阵的大小,用于存储的方法,存储在哪个地址的信息等等)和指向包含像素值(取决于所选存储方法的任何维度)。矩阵头大小是恒定的,然而矩阵本身的大小可以随着图像的不同而变化,通常会大一个数量级。
- 使用引用计数系统。
- 自动管理内存。
- 赋值运算符和复制构造函数只复制矩阵,而不是数据本身。
- cv::Mat::clone()和cv::Mat::copyTo()函数复制矩阵本身。
- OpenCV标准显示系统使用BGR颜色空间组成颜色。
- cv::Mat::Mat构造函数,CV_8UC3意味着使用8位长的无符号字符类型,每个像素有三个通道 。
Mat M(2,2,CV_8UC3,Scalar(0,0,255));
cout << “M =” << endl << “” <<“M << endl << endl;
扫描图像
- C风格操作符[]
- 迭代器
- cv::Mat::at(int i0, int i1)
- LUT功能
速度:4>1>2>3
LUT函数 :实际上就是一张像素灰度值的映射表,它将实际采样到的像素灰度值经过一定的变换如阈值、反转等,变成了另外一个与之对应的灰度值,这样可以起到突出图像的有用信息,增强图像的光对比度的作用。
混合两个图像
cv::addWeighted
改变图像的亮度和对比度
cv::convertTo
绘图
cv::line,cv::ellipse,cv::circle ,cv::fillPoly,cv::rectangle
随机生成器和OpenCV文本
cv::RNG,cv::putText
IPP
针对cpu做了优化,给cpu提速
并行计算函数 parallel_for_
在使用opencv的过程中,对图片的处理计算量很大,所以在实施运行的程序中如何高效的计算会节省很多时间。现有的方法有很多,如OpenMp,TBB,OpenCL,Nvidia的CUDA等。CUDA不太适合毫秒级别的程序运行,单一张图片在cpu和gpu之间的传输时间就已经达到300ms(使用opencv的cuda库函数);在TX2上直接对cuda进行编程,数据的传输也是在50ms(不包含初始化)以上。opencv的并行计算函数parallel_for_,整合了上述的多个组件。
平滑处理
cv::blur
设置边框
cv::copyMakeBorder
边缘检测
cv::Canny
重新映射
cv::remap
模板匹配
cv::matchTemplate
滑动条
cv::createTrackbar