腐蚀
作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点。
cv.erode(img,kernel,iterations)
膨胀
作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的孔洞。
cv.dilate(img,kernel,iterations)
核
这个概念可以理解为处理后的色块大小
核的像素面积越大处理产生的色块越大越模糊
以下为原图,腐蚀图,膨胀图效果
?示例代码:
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
# 1 读取图像
img = cv.imread("./1.jpeg")
# 2 创建核结构
kernel = np.ones((5, 5), np.uint8)
# 3 图像腐蚀和膨胀
erosion = cv.erode(img, kernel) # 腐蚀
dilate = cv.dilate(img,kernel) # 膨胀
# 4 图像展示
fig,axes=plt.subplots(nrows=1,ncols=3,figsize=(10,8),dpi=100)
axes[0].imshow(img)
axes[0].set_title("原图")
axes[1].imshow(erosion)
axes[1].set_title("腐蚀后结果")
axes[2].imshow(dilate)
axes[2].set_title("膨胀后结果")
plt.show()
开闭运算
以上这两种操作一般都会配合使用
开运算
先腐蚀后膨胀就是开运算
作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影原来的图像。
闭运算
先膨胀后腐蚀就是闭运算
作用是:消除“闭合”物体里面的孔洞,特点:可以填充闭合区域。
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
# 1 读取图像
img1 = cv.imread("./1.png")
img2 = cv.imread("./1.png")
# 2 创建核结构
kernel = np.ones((10, 10), np.uint8)
# 3 图像的开闭运算
cvOpen = cv.morphologyEx(img1,cv.MORPH_OPEN,kernel) # 开运算
cvClose = cv.morphologyEx(img2,cv.MORPH_CLOSE,kernel)# 闭运算
# 4 图像展示
fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(10,8))
axes[0,0].imshow(img1)
axes[0,0].set_title("原图")
axes[0,1].imshow(cvOpen)
axes[0,1].set_title("开运算结果")
axes[1,0].imshow(img2)
axes[1,0].set_title("原图")
axes[1,1].imshow(cvClose)
axes[1,1].set_title("闭运算结果")
plt.show()
?
|