目录
一、形态学梯度
二、顶帽操作
三、黑帽操作
一、形态学梯度
- 梯度=原图 – 腐蚀
- 腐蚀之后原图边缘变小,原图 – 腐蚀 就可以得到腐蚀掉的部分,即边缘
案例代码如下:
import cv2import numpy as np# 导入图片img = cv2.imread('6.jpg')# 注意调节kernel大小以获得更清晰的边缘kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))dst = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel,iterations=1)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)cv2.destroyAllWindows()
运行结果如下:
二、顶帽操作
- 顶帽 = 原图 – 开运算
- 开运算的效果是去除图形外的噪点,原图 – 开运算就得到了去掉的噪点
案例代码如下:
import cv2import numpy as npimg = cv2.imread('6.jpg')# 注意调整kernel以保留小图形kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(19,19))dst = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel,iterations=1)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)cv2.destroyAllWindows()
三、黑帽操作
- 黑帽 = 原图 – 闭运算
- 闭运算可以将图形内部的噪点去掉,那么原图 – 闭运算的结果就是图形内部的噪点
案例代码如下:
import cv2import numpy as npimg = cv2.imread('6.jpg')# 注意调整kernel以保留小图形kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(19,19))dst = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel,iterations=1)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)cv2.destroyAllWindows()