最近花了一周多时间,拜读了毛星云的OpenCV3编程入门,今天晚上从新东方英语回来有点时间就写个总结吧!
#include<opencv2/opencv.hpp> 这个头文件包含了很多头文件,一般只需加载这一个
一. HighGUI图像用户界面
图像的载入,显示,窗口,输出到文件,滑动条创建等操作
二. core组件
Mat 、Point、Scalar、Size、Rect 等类
cvtColor()、DrawEllipse()、DrawFilledCirclle()、DrawLine()等函数
操作:(1)访问图像中的像素(2)addWeighted()函数,计算数组加权和,可以将两个图像进行混合
(3)可以进行不同通道的图像分离和合并split()和merge()函数(4)图像对比度和亮度进行调整
(5)输入输出其他文件
三. imgproc组件
3.1 图像处理
线性滤波:方框滤波(boxFilter)、均值滤波(blur)、高斯滤波(GaussianBlur),它们只是模板的选择不同
非线性滤波:中值滤波(medianBlur)、双边滤波(bilateralFilter),双边滤波是在图像平滑的区域使用高斯滤波,高频部分(即边缘地区)保持了原来的像素。
形态学滤波:腐蚀(erode),膨胀(dilate),开运算(open),闭运算(close),形态学梯度(保留物体边缘轮廓),顶帽(原图-开运算结果图),黑帽(闭运算与原图之差) morphologyEx()这个函数可选择所有的形态学处理
漫水填充:floodFill() 用特定的颜色填充连通的区域
图像金字塔与尺寸缩放(resize):上采样(pyrUp)和下采样(pyrDown)(向上与向下相对于图像的大小而言,即和金字塔方向相反),相对于不同的分辨率提出的多尺度表达。
阈值化:threshold() 和 adaptivethreshold()自适应阈值 求取二值化图像
3.2 图像变换
边缘检测:canny、sobel、Laplacian,一般sobel算子比较快,canny算子效果好。
霍夫变换:霍夫线变换和霍夫圆变换,当然也可以检测别的形状。线检测的原理主要是转换到极坐标空间,算累加概率。
重映射:主要是对图像进行绕x轴,y轴旋转以及xy轴旋转
仿射变换:对图像的旋转,平移,缩放
直方图均衡化:拉伸像素强度的范围
3.3 图像轮廓提取与图像分割
查找绘制轮廓:findContours() drawContours()
寻找凸包: 最外层的点连接构成的凸多边形 convexHull()
多边形包围轮廓:将轮廓用多边形表示
图像的矩:
分水岭:watershed() 第二个参数被标记过的边界点作为入水点
图像修补:impaint()函数
3.4 直方图与匹配
直方图计算与绘制:
calcHist() minMaxLoc()
直方图对比:
compareHist()
反向投影:首先计算某一特征的直方图模型,然后使用模型寻找图像中存在该特征的位置。
模板匹配:用模板和一张图像存在该模板的位置进行匹配。
四. feature2d组件
4.1 角点检测
Harris角点:
图像强角点:
亚像素级角点: