小言_互联网的博客

在OpenCV里实现闭运算

509人阅读  评论(0)

前面学习了开运算,它是先腐蚀再膨胀,如果把这个顺序倒一下,改为先膨胀再腐蚀,我们就这种运算叫做闭运算,可以用数学公式表示如下:

I∙S=(I⨁S)⊖S

可以使用下面表达式来计算:

闭运算有以下特点:

(1)闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。

(2)闭运算是通过填充图像的凹角来滤波图像的。

(3)结构元素大小的不同将导致滤波效果的不同。

(4)不同结构元素的选择导致了不同的分割。

它具有填充白色物体内细小黑色空洞的区域,连接临近物体、同一个结构元、多次迭代处理,也可以在不明显改变其面积的情况下平滑其边界等作用。

下面通过例了来演示去掉小黑点:

#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2
import numpy as np

#图片的路径
imgname = "szbin3.png"

#读取图片
image = cv2.imread(imgname, cv2.IMREAD_GRAYSCALE)

#图片的高度和宽度
h,w = image.shape[:2]
print('imagesize={}-{}'.format(w,h))

#显示原图
cv2.imshow("Image",image)

#结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
print(kernel)
#开运算
out = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
cv2.imshow("out",out)

cv2.waitKey(0)
cv2.destroyAllWindows()

结果输出如下:

输入原图

从结果里可以看到原来在深圳的字上面有很多小黑点,经过闭运算处理之后,小黑点已经没有了,从而达到去掉黑噪声的效果。

https://blog.csdn.net/caimouse/article/details/51749579


转载:https://blog.csdn.net/caimouse/article/details/101902070
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场