opencv形态学操作之开运算闭运算
Posted answerthe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv形态学操作之开运算闭运算相关的知识,希望对你有一定的参考价值。
原图:
开运算:
先腐蚀后膨胀叫开运算(因为先腐蚀会分开物体,这样容易记住),其作用是:分离物体,消除小区域。这类形态学操作用cv2.morphologyEx()
函数实现:
下面两份代码分别对应通过先腐蚀后膨胀的效果 和 直接通过开运算的效果
import cv2 import numpy as np img = cv2.imread("zw.jpg", 0) kernel = np.ones((3, 3), np.uint8) kerne2 = np.ones((5, 5), np.uint8) erodtion = cv2.erode(img, kernel, iterations=2) dilation = cv2.dilate(erodtion, kerne2, iterations=1)
import cv2 import numpy as np img = cv2.imread("zw.jpg", 0) kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 矩形结构 open = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
可以看到两者差别不大。
闭运算
先膨胀后腐蚀(先膨胀会使白色的部分扩张,以至于消除/"闭合"物体里面的小黑洞,所以叫闭运算)
import cv2 import numpy as np img = cv2.imread("zw.jpg", 0) kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) # 矩形结构 open = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations=2)
可以看出左侧原图中的黑点,通过闭运算后被填充掉了
以上是关于opencv形态学操作之开运算闭运算的主要内容,如果未能解决你的问题,请参考以下文章
图像的形态学开操作(开运算)和闭操作(闭运算)的概念和作用,并用OpenCV的函数morphologyEx()实现对图像的开闭操作
youcans 的 OpenCV 例程200篇137. 灰度开运算和灰度闭运算原理