图像腐蚀
对Z中的集合A和B,B对A进行腐蚀的整个过程如下:
1. 用结构元素B,扫描图像A的每一个像素
2. 用结构元素与其覆盖的二值图像做 “与”操作
3. 如果都为1,结果图像的该像素为1. 否则为0
腐蚀处理的结果是使原来的二值图像减小一圈
函数cv2.erode(img,kernel,iterations = 1)
第一个参数源图像
第二个参数内核矩阵
第三个参数迭代次数
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('src.jpg')
kernel = np.ones((5,5),np.uint8)
ersion = cv2.erode(img,kernel,iterations = 1)
plt.subplot(121),plt.imshow(img)
plt.title('Original'),plt.xticks([]),plt.yticks([])
plt.subplot(122),plt.imshow(ersion)
plt.title('Averaging'),plt.xticks([]),plt.yticks([])
plt.show()
图像膨胀
1. 用结构元素B,扫描图像A的每一个像素
2. 用结构元素与其覆盖的二值图像做 “与”
3. 如果都为0,结果图像的该像素为0;否则为1
函数 cv2.dilate(img,kernel,iterations = 1)
第一个参数源图像
第二个参数内核矩阵
第三个参数迭代次数
dilation = cv2.dilate(img,kernel,iterations = 1)
开运算
先进性腐蚀再进行膨胀就叫做开运算,它被用来去除噪声
闭运算
先膨胀再腐蚀。它经常被用来填充前景物体中的小洞,或者前景物体上的小黑点。
形态学梯度
其实就是一幅图像膨胀与腐蚀的差别。结果看上去就像前景物体的轮廓
礼帽
原始图像与进行开运算之后得到的图像的差
黑帽
进行闭运算之后得到的图像与原始图像的差
函数cv2.morphologyEx(img,op,kernel)
第一个参数源图像
第二个参数进行的操作(MORPH_OPEN - 开运算、MORPH_CLOSE - 闭运算
MORPH_GRADIENT - 形态梯度、MORPH_TOPHAT - “礼帽”、MORPH_BLACKHAT - “黑帽”)
第三个参数内核矩阵
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)