原理:
对二值图像进行操作。
腐蚀和膨胀是最基本的形态学运算。
腐蚀和膨胀是针对白色部分(高亮部分)而言的。
膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。
膨胀:
原理:最大值滤波,即把中心像素替换成模板里的最大值1(或操作),1值变多
作用:①增加像素;②平滑对象边缘;③减少对象之间的距离
腐蚀:最小值滤波,即把中心像素替换成模板里的最小值0(与操作),1值变少
作用:①减少像素,②平滑对象边缘;③弱化或分割图像之间的半岛型连接
中值滤波:用模板的中值进行滤波
代码如下:
import cv2 as cv
import numpy as np
def erode_demo(image):
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
print('ret:',ret)
cv.imshow('binary:',binary)
kernel=cv.getStructuringElement(cv.MORPH_RECT,(3,3)) #获取结构元素,形态学矩形
dst=cv.erode(binary,kernel)
cv.imshow('erode',dst)
def dilate_demo(image):
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
print('ret:',ret)
# cv.imshow('binary:',binary)
kernel=cv.getStructuringElement(cv.MORPH_RECT,(3,3)) #获取结构元素,形态学矩形,即虚拟框用来与或操作
dst=cv.dilate(binary,kernel)
cv.imshow('dilate',dst)
src=cv.imread('D:/pycharm/pycharmproject/test.jpg')
cv.imshow('src',src)
erode_demo(src)
dilate_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()