主要熟悉了几个基本操作函数,如下:
腐蚀操作,kernel是一个55数组,腐蚀操作中先在图像中取出一个上述大小的像素方阵,然后对比其他像素,如果在55范围内出现相同值(比如说黑色),则把该像素置为黑色。
def corrosionOperation(img):#腐蚀操作
kernel = np.ones((5,5),np.uint8)#返回一个值全是1的数组,zero函数同理
erosion = cv2.erode(img,kernel,iterations = 1)
return erosion
腐蚀操作的逆运算
def expandOperation(img):#膨胀运算
kernel = np.ones((3,3),np.uint8)
dige=cv2.dilate(img,kernel,iterations = 1)
return dige
开关操作,由参数确定功能
def openCloseOperation(img):
kernel = np.ones((5,5),np.uint8)
#open 先腐蚀后膨胀
#close 前膨胀后腐蚀
opOrCl = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)#CLOSE
return opOrCl
def gradientOperation(img):
#梯度运算 膨胀-腐蚀 得到边界
kernel = np.ones((7,7),np.uint8)
#dilate = cv2.dilate(img,kernel,iterations = 5)
#erosion = cv2.erode(img,kernel,iterations = 5)
#res = np.hstack((dilate,erosion))
return cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
def topHat(img):
#原始-开运算(剩下毛刺)
kernel = np.ones((7,7),np.uint8)
return cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
def blackHat(img):
#闭运算-原始输入(轮廓)
kernel = np.ones((7,7),np.uint8)
return cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)