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)

OpenCV学习笔记-开闭操作_第1张图片

 

OpenCV学习笔记-开闭操作_第2张图片

 

 

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

 

 

提取图像中的水平直线:

kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 1))
dst = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel)

OpenCV学习笔记-开闭操作_第3张图片

同理,我们让ksize=(1,15),就可以提取图像中的垂直直线。

 

 

二、闭操作

 

 

闭操作可以用来填充前景物体中的小洞,或者前景物体上的小黑点。

kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5, 5))
dst = cv.morphologyEx(thresh, cv.MORPH_CLOSE, kernel)

OpenCV学习笔记-开闭操作_第4张图片

 

 

当我们改变内核的形状,也能达到不同的效果,比如提取图像中的圆。

#可以提取图像中的圆点
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5, 5))
dst = cv.morphologyEx(thresh, cv.MORPH_CLOSE, kernel)

OpenCV学习笔记-开闭操作_第5张图片

 

 

你可能感兴趣的:(#,OpenCV-Python)