腐蚀是用一个全是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()
效果如下:
可以看到图片中一些白色的斑点被去除了,并且文字也比之前变细了