1、开运算:先对图像进行腐蚀,然后再膨胀,目的是去除噪声;(除外面的噪声)
morphologyEx(src,
op, # 为形态变换的类型 MORPH_OPEN:开运算
kernel,
dst: ,
anchor,
iterations,
borderType,
borderValue)
#调整窗口的大小
cv2.namedWindow('dst',cv2.WINDOW_NORMAL)
cv2.resizeWindow('dst',800,600)
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
# img=cv2.erode(img,kernel,iterations=1) # 腐蚀,可自行改变迭代数,实现效果
# dst=cv2.dilate(img,kernel,iterations=1) # 膨胀
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
dst=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel,iterations=1)# 开运算
cv2.imshow("dst",dst)
cv2.waitKey(0)
2、闭运算:先对图像进行膨胀,然后再腐蚀,目的是去除噪声;(除里面的噪声)
morphologyEx(src,
op, # 为形态变换的类型 MORPH_CLOSE:闭运算
kernel,
dst: ,
anchor,
iterations,
borderType,
borderValue)
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
# dst=cv2.dilate(img,kernel,iterations=1) # 膨胀
# img=cv2.erode(img,kernel,iterations=1) # 腐蚀
dst=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel,iterations=1)
cv2.imshow("dst",dst)
3、形态学梯度
边缘:腐蚀之后,原图的边缘会减小,通过原图-腐蚀=边缘;
morphologyEx(src,
op, # 为形态变换的类型 MORPH_GRADIENT:梯度图
kernel,
dst: ,
anchor,
iterations,
borderType,
borderValue)
#通过调整kernel可以获得更加清晰的边缘
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
dst=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel,iterations=1)
cv2.imshow("dst",dst)