知方号

知方号

openCV学习24.腐蚀操作与形态学卷积核的获取

openCV学习24.腐蚀操作与形态学卷积核的获取

1.腐蚀

腐蚀是用一个全是1的卷积核去扫描一个二值图,由于卷积核全是1,当锚点为白色(1),但是卷积核覆盖的范围内只要有一个是黑色的(0),由于卷积运算中有乘法的部分,因为这一个0,锚点最终都会被计算成0,也就是被腐蚀成黑色的了。

如图所示,用一个5*5的卷积核去扫描这个图像,那么虚线外面的白色部分都会被腐蚀成黑色。

2.API

例子:

#参数:图片,卷积核,迭代次数,迭代次数表示腐蚀执行的次数

det = cv2.erode(img,krenel,iterations=2)

3.形态学卷积核的获取

openCV对于形态学部分的卷积核的获取提供了一个便捷的接口:

因此要获得一个3*3全是1的卷积核,可以用如下指令

#cv提供了获取形态学卷积核的API

#getStructruingElement(shape,ksize[,anchor])

#shape指的是卷积核中1组成的形状,其中MORPH_RECT为矩形,MORPH_ELLIPSE椭圆,MORPH_CROSS十字

krenel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))

4.完整代码: import cv2import numpyimport numpy as npimg = cv2.imread("image/world.png")#krenel = np.ones((3,3),np.uint8)#cv提供了获取形态学卷积核的API#getStructruingElement(shape,ksize[,anchor])#shape指的是卷积核中1组成的形状,其中MORPH_RECT为矩形,MORPH_ELLIPSE椭圆,MORPH_CROSS十字krenel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))#参数:图片,卷积核,迭代次数,迭代次数表示腐蚀执行的次数det = cv2.erode(img,krenel,iterations=2)cv2.imshow("show",np.hstack((img,det)))cv2.waitKey(0)cv2.destroyAllWindows()

 

效果如下:

可以看到图片中一些白色的斑点被去除了,并且文字也比之前变细了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。