-
图像形态学操作——基于形状的一系列图像处理操作的合集,主要是集合论基础上的形态学操作
- 形态学有四个基本操作:腐蚀、膨胀、开、闭
- 膨胀和腐蚀是图像处理中最常用的形态学操作手段
- 膨胀(理解为背景的膨胀)
跟卷积操作类似,假设有图像A和及结构元素B,结构元素B在A上面移动,其中B来定义其中心为锚点,计算B覆盖下A的最大像素用来替换锚点的像素,其中B作为结构体可以是任意形状。
通常我们可以通过图像卷积操作完成平滑,模糊,去燥,锐化,边缘提取 - 腐蚀(理解为物体的腐蚀)
getStructuringElement函数腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值替换锚点重叠下图像的像素值
相关API
会返回指定形状和尺寸的结构元素,通过结构元素对Mat对象下所赋值的对象的像素点进行操作
getStructuringElement(int shape,Size ksise,Point anchor)
//形状(MORPH_RECT / MORPH_CROSS / MORPH_ELLIPSE)
//大小
//锚点 默认是Point(-1,-1)意思是中心像素
//膨胀:dilate(src,dst,kernel)
//腐蚀:erode(src,dst,kernel)
- 创建滑动条(动态调节结构元素大小)
作用:调节算法时,为了寻找一个较好的预值,可以使用该功能进行测试
```cpp
createTrackbar(
constString&trackbarname,//滑动条的名字
constString winName, //滑动条所在的窗口名字
int* value, //滑块所在当前值,此处是个指针
int count, //滑块的最大值
Trackbarcallback func, //滑块所调用的函数——回调函数
void*userdata=0
)
其中最重要的是callback函数功能,如果设置为NULL就是说只有值update,但是不会调用callback的函数
- 回调函数——createTrackbar()函数的第五个参数
void Function——name (int ,void *)
注意事项:
一、如果有产生新的图像,那么新的图像变量名不能用之前的变量;如Canny(),结果图像要重新在回调函数canny_track()中编写。
二、如果要显示图像,imshow()函数中的窗口名要跟第一步创建窗口名一致,如果不一致,那么是滑动条和图像不在一个窗口显示,可能其他情况会需要这种结果,就另说了。