《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05
第8章 形态学操作
8.2 膨胀
8.2.1 定义
膨胀操作是形态学中另外一种基本的操作。膨胀操作和腐蚀操作的作用是相反的,膨胀操作能对图像的边界进行扩张。膨胀操作将与当前对象(前景)接触到的背景点合并到当前对象内,从而实现将图像的边界点向外扩张。如果图像内两个对象的距离较近,那么在膨胀的过程中,两个对象可能会连通在一起。膨胀操作对填补图像分割后图像内所存在的空白相当有帮助。二值图像的膨胀示例如图8-8所示。
图8-8 二值图像膨胀效果
同腐蚀过程一样,在膨胀过程中,也是使用一个结构元来逐个像素地扫描要被膨胀的图像,并根据结构元和待膨胀图像的关系来确定膨胀结果。
8.2.2 函数
在OpenCV内,采用函数cv2.dilate()实现对图像的膨胀操作,该函数的语法结构为:
dst=cv2.dilate(src,kernel)
8.2.3 程序示例
【例8.5】使用函数cv2.dilate()完成图像膨胀操作。
import cv2
import numpy as np
o=cv2.imread("dilation.bmp",cv2.IMREAD_UNCHANGED)
kernel = np.ones((9,9),np.uint8)
dilation = cv2.dilate(o,kernel)
cv2.imshow("original",o)
cv2.imshow("dilation",dilation)
cv2.waitKey()
cv2.destroyAllWindows()
8.2.4 结果
在本例中,使用语句kernel=np.ones((9,9), np.uint8)生成9×9的核,来对原始图像进行膨胀操作。
运行程序,结果如图8-12所示。其中,左图是原始图像,右图是膨胀处理结果。从图中可以看到,膨胀操作将原始图像“变粗”了。
图8-12 【例8.5】对应的膨胀结果
网友评论