形态学之闭运算
2021-10-25 本文已影响0人
大龙10
《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05
第8章 形态学操作
8.5 闭运算
8.5.1 定义
闭运算是先膨胀、后腐蚀的运算,它有助于关闭前景物体内部的小孔,或去除物体上的小黑点,还可以将不同的前景图像进行连接。
例如,在图8-17中,通过先膨胀后腐蚀的闭运算去除了原始图像内部的小孔(内部闭合的闭运算),其中:
图8-17 实现去除内部小孔的闭运算
从图8-17可以看到,原始图像在经过膨胀、腐蚀后,实现了闭合内部小孔的目的。
除此以外,闭运算还可以实现前景图像的连接。例如,在图8-18中,利用闭运算将原本独立的两部分前景图像连接在一起,其中:
图8-18 实现闭合连接的闭运算
8.5.2 函数
通过将函数cv2.morphologyEx()中操作类型参数op设置为“cv2.MORPH_CLOSE”,可以实现闭运算。其语法结构如下:
closing=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
8.5.3 程序示例
【例8.8】使用函数cv2.morphologyEx()实现闭运算。
import cv2
import numpy as np
img1=cv2.imread("closing.bmp")
img2=cv2.imread("closing2.bmp")
k=np.ones((10,10),np.uint8)
r1=cv2.morphologyEx(img1,cv2.MORPH_CLOSE,k,iterations=3)
r2=cv2.morphologyEx(img2,cv2.MORPH_CLOSE,k,iterations=3)
cv2.imshow("img1",img1)
cv2.imshow("result1",r1)
cv2.imshow("img2",img2)
cv2.imshow("result2",r2)
cv2.waitKey()
cv2.destroyAllWindows()
8.5.4 结果
图8-19 【例8.8】对应的闭运算结果- 图(a)是原始图像img1。
- 图(b)是原始图像img1经过闭运算得到的图像r1。
- 图(c)是原始图像img2。
- 图(d)是原始图像img2经过闭运算得到的图像r2。