1.基础操作
2.访问图像中像素的3种方法
① 指针(高效)
返回图像任一行的首地址,ptr类(模板类),如Image.ptr<uchar>(i),读取第i行首地址
uchar* data=Image.ptr<uchar>(i)
data[j] 则为第i行第j列的元素
② 迭代器(interator)(不会出现越界)
③ 动态地址计算(耗时,直观简单):at
M.at<uchar>(i,j)=val,表示单通道,第i行第j列元素;
M.at<Vec3b>(i,j)[channel]=val,表示多通道(channel:0表示蓝,1表示绿,2表示红),第i行第j列元素。
3.常见的处理函数
① 图翻转
② 图旋转
③ 空间颜色转换
④ 图像通道的分离与合并
⑤ 图像平滑(常见滤波器)
4.OpenCV改变图像的对比度和亮度
或
其中cv :: Mat :: convertTo将有效地执行* new_image = a * image + beta *,即二者等效。在任何情况下,两种方法都给出相同的结果,但是convertTo是更优化的,并且工作得更快。
5.OpenCV平滑图像
平滑,也称为模糊,是一种简单而经常使用的图像处理操作。
如 高斯滤波器、中值滤波器、双边过滤器等。
如下是高斯平滑(模糊)结果:
6.Canny边缘检测器
7.Hough Line 霍夫线变换
① 法一
② 法二
8.Hough Circle 霍夫圆变换
加载图像并使其模糊 ——> 以减少噪音将Hough Circle变换应用于模糊图像 ——> 在窗口中显示检测到的圆。
9.直方图同等化(Equalization)
10.查找轮廓
11. 角点检测
① Harris corner 角点检测
② Shi-Tomasi 角点检测