图像形态学
1、是图像处理学科的一个单独分支学科
2、灰度与二值图像处理中重要手段
3、是由数学的集合论等相关理论发展起来的
膨胀
3*3的结构元素/模板
注意:
–腐蚀与膨胀都支持
–任意形状的结构元素
膨胀的作用(Dilata)
或操作也就是最大值替换中心像素
1、对象大小增加一个像素(3*3)
2、平滑对象边缘
3、减少或者填充对象之间的距离
腐蚀的作用 (Erode)
与操作也就是最小值替换中心像素
1、对象大小减少1个像素(3*3)
2、平滑对象边缘
3、弱化或者分割图像之间的半岛型连接
也可以对彩色图像进行膨胀或腐蚀操作
膨胀:opencv定义用最大值取代中心像素,用最大值彩色图像会变得超级亮,黑色的部分变得很少,白色的部分变多,整个图像变量
腐蚀:opencv定义用最小值取代中心像素,黑色部分颜色加重,白色部分变少
先确认核的中心点
import cv2 as cv
import numpy as np
print("----------------hi.python!---------------------------")
src = cv.imread("C:/Users/LENOVO/Desktop/test image/shouxie.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) # 创建一个window
cv.imshow("input image",src)
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) # 返回两个量,ret返回阈值大小,binary返回得到二值图像
kenel = cv.getStructuringElement(cv.MORPH_RECT, (20, 20)) # 通过改变模板的大小(5, 5)或(3, 3)会出现不同程度的腐蚀现象
cv.imshow("binary", binary)
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) # 返回两个量,ret返回阈值大小,binary返回得到二值图像
kenel = cv.getStructuringElement(cv.MORPH_RECT, (6, 6)) # 通过改变模板的大小(5, 5)或(3, 3)会出现不同程度的腐蚀现象
cv.imshow("binary", binary)
dst = cv.dilate(binary, kenel)
cv.imshow("erode_demo", dst)
# 也可对彩色图像进行膨胀或腐蚀操作
dst = cv.erode(binary, kenel)
sr = cv.imread("C:/Users/LENOVO/Desktop/test image/lenaa.bmp")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) # 创建一个window
cv.imshow("input image",sr)
kenel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5)) # 通过改变模板的大小(5, 5)或(3, 3)会出现不同程度的腐蚀现象
#ds = cv.erode(sr, kenel)
ds = cv.dilate(sr, kenel)
cv.imshow("erode_demo", ds)
# erode_demo(src)
#dilate_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()