OpenCV学习笔记-开闭操作

开操作和闭操作都是基于膨胀和腐蚀操作组合形成的。先腐蚀再膨胀就是开操作,先膨胀再腐蚀就是闭操作了。

用开操作可以去除噪声,也可以提取水平或者垂直的直线。
这里我们提一个函数getStructuringElement(),它用来返回指定形状和尺寸的结构元素。

 
 

getStructuringElement(shape, ksize, anchor=None)
返回指定形状和尺寸的结构元素
shape 表示内核的形状:矩形 MORPH_RECT,交叉形 MORPH_CROSS,椭圆形 MORPH_ELLIPSE
ksize 表示内核的尺寸
anchor 锚点的位置
我们在以后的操作都离不开这个函数。

一、开操作

我们使用基本的操作,可以去除噪声。
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
dst = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel)


当我们改变内核的大小,就能达到不同的效果,比如我们设置ksize=(15,1),就可以

提取图像中的水平直线:
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 1))
dst = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel)
同理,我们让ksize=(1,15),就可以提取图像中的垂直直线。

二、闭操作

闭操作可以用来填充前景物体中的小洞,或者前景物体上的小黑点。
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5, 5))
dst = cv.morphologyEx(thresh, cv.MORPH_CLOSE, kernel)

当我们改变内核的形状,也能达到不同的效果,比如提取图像中的圆。
#可以提取图像中的圆点
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5, 5))
dst = cv.morphologyEx(thresh, cv.MORPH_CLOSE, kernel)


猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/80488902
今日推荐