概念:图像的邻域、连通性
膨胀与腐蚀
膨胀和腐蚀为 相反 的一对操作。dilate (膨胀) erode(腐蚀)都是 形态学的滤波 。
腐蚀:
腐蚀是对图像中的高亮(白色)区域进行腐蚀,即求局部区域最小值的操作。
下图的示例是用 3*3 的算 子对二值图像进行腐蚀操作,求取对应位置的 8 邻域的最小值并输出:
腐蚀作用: 消除物体边界点,使目标 缩小,可以 消除小于结构元素的噪声点
腐蚀函数: cv2.erode()
函数原型:dst=cv2.erode(img,kernel,iterations)
img:要处理的图像
kernel:核结构
iterations:腐蚀的次数,默认是1
膨胀:
膨胀是对图像中的高亮(白色)区域进行膨胀,即求局部区域最大值的操作,膨胀运算是腐蚀的逆运算。
膨胀作用:将与物体接触的所有背景点合并到物体中,使目标 增大,可 添补目标中的孔洞
膨胀函数: cv2.dilate()
函数原型:dst=cv2.dilate(img,kernel,iterations)
img:要处理的图像
kernel:核结构
iterations:膨胀的次数,默认是1
代码:
img = cv.imread('test.jpg')
kernel = np.ones((5, 5), np.uint8) #创建核结构
erosion = cv.erode(img, kernel)
dilate = cv.dilate(img, kernel)
cv.imshow('erosion', erosion)
cv.imshow('dilate', dilate)
cv.waitKey(0)
开闭运算
开闭运算函数: cv2.morphologyEx()
函数原型:dst=cv2.morphologyEx(img,op,kernel)
img:要处理的图像
op:处理方式:若进行开运算,则设为cv2.MORPH_OPEN,若进行闭运算,则设为cv2.MORPH_CLOSE
kernel:核结构
代码:
img = cv.imread('test.jpg')
kernel = np.ones((10, 10), np.uint8)
open = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)
close = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)
cv.imshow('open', open)
cv.imshow('close', close)
cv.waitKey(0)
礼帽和黑帽
礼帽和黑帽运算函数:cv2.morphologyEx()
函数原型:dst=cv2.morphologyEx(img,op,kernel)
img:要处理的图像
op:处理方式:若进行礼帽运算,则设为cv2.MORPH_TOPHAT,若进行黑帽运算,则设为cv2.MORPH_BLACKHAT
kernel:核结构
代码:
img = cv.imread('test.jpg')
kernel = np.ones((10, 10), np.uint8)
top = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel)
black = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel)
cv.imshow('top', top)
cv.imshow('black', black)
cv.waitKey(0)
总结: