写在前面
1.膨胀和腐蚀可以分别理解为”高值滤波“和”低值滤波“。膨胀之后,白色(高值)多了,黑色(低值)少了;腐蚀之后,黑色(低值)多了,白色(高值)少了。
膨胀:
腐蚀:
2。膨胀腐蚀不仅仅可以用于单通道图像,一样适用于三通道的RGB图像。本篇博客将图像二值化,只是为了方便理解和效果呈现。
膨胀
膨胀的作用:
1.对象大小增加一个像素(3×3)
2.平滑对象边缘
3.减少或者填充对象之间的距离
API演示
#coding=UTF-8
import cv2 as cv
import numpy as np
def dilate_demo(image):
print(image.shape)
gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary",binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT,(3,3))
dst = cv.dilate(binary,kernel)
cv.imshow("dilate image",dst)
scr = cv.imread("D:/academic/picture/opencv_data/LinuxLogo.jpg")
cv.imshow("input image",scr)
dilate_demo(scr)
cv.waitKey(0)
cv.destroyAllWindows()
效果演示:
可以看到,白色的部分被”膨胀“了。
腐蚀
腐蚀的作用
1.对象大小减少一个像素(3×3)
2.平滑对象边缘
3.弱化或者分割图像之间的半岛型连接
API演示
#coding=UTF-8
import cv2 as cv
import numpy as np
def erode_demo(image):
print(image.shape)
gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary",binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT,(3,3))
dst = cv.erode(binary,kernel)
cv.imshow("erode image",dst)
scr = cv.imread("D:/academic/picture/opencv_data/LinuxLogo.jpg")
cv.imshow("input image",scr)
erode_demo(scr)
cv.waitKey(0)
cv.destroyAllWindows()
效果演示:
可以看到,白色部分被”腐蚀“了。