import cv2 as cv
import numpy as np
#图像形态学1 膨胀(dilate)与腐蚀 是灰度与二值图像处理中的重要手段 数学集合论和拓扑集合的基础上发展起来
#膨胀(dilate)与腐蚀(erode) 最值滤波(3*3模板?)
#膨胀 3*3模板中的最大值替换中心像素 腐蚀 3*3模板中的最小值替换中心像素
#膨胀的作用 对象大小增加一个像素(3x3) 平滑对象边缘 减少或者填充对象之间的距离
#腐蚀的作用 对象大小减少一个像素(3x3) 平滑对象边缘 弱化或者分割对象之间半岛型连接
def erode_demo(image):
print(image.shape)
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)#注意cv.THRESH_BINARY_INV
cv.imshow("binary",binary)
kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5))#得到结构元素 cross十字交叉 矩形 结构元素变大 腐蚀加重
dst=cv.erode(binary,kernel=kernel)
cv.imshow("erode_demo",dst)
def dilate_demo(image):
print(image.shape)
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)#注意cv.THRESH_BINARY_INV
cv.imshow("binary",binary)
kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5))#得到结构元素 cross十字交叉 矩形 结构元素变大 腐蚀加重
dst=cv.dilate(binary,kernel=kernel)
cv.imshow("dilate_demo",dst)
src=cv.imread("D:\Py_Test\Open_Cv\data\pic3.png")
cv.namedWindow("Test",cv.WINDOW_AUTOSIZE)
cv.imshow("Test",src)#在上面创建的“Test”窗口中显示图像sr
dilate_demo(src)
#彩色图像的膨胀
src2=cv.imread("D:\Py_Test\Open_Cv\data\lena.jpg")
cv.imshow("color",src2)
kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5))#得到结构元素 cross十字交叉 矩形 结构元素变大 腐蚀加重
dst=cv.erode(src2,kernel=kernel)#腐蚀是最小值替换中心像素,所以眉毛的位置会变的更加黑 0为最黑
cv.imshow("color_dilate",dst)
cv.waitKey(0)#(0)参数表示无限等待 等又任意按键按下关闭图片窗口
cv.destroyAllWindows()
Open_Cv 膨胀与腐蚀
最新推荐文章于 2025-05-05 13:43:00 发布