1.定义:
- 膨胀(Dilated)
- 腐蚀(Eroded)
黑色为腐蚀后的图像 - 开闭运算
2.腐蚀、膨胀示例:
import cv2
import numpy as np
img = cv2.imread('C:/1.jpg')
#OpenCV定义的结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))
#腐蚀图像
eroded = cv2.erode(img,kernel)
#显示腐蚀后的图像
cv2.imshow("Eroded Image",eroded)
#膨胀图像
dilated = cv2.dilate(img,kernel)
#显示膨胀后的图像
cv2.imshow("Dilated Image",dilated)
#原图像
cv2.imshow("Origin", img)
#NumPy定义的结构元素
NpKernel = np.uint8(np.ones((3,3)))
Nperoded = cv2.erode(img,NpKernel)
#显示腐蚀后的图像
cv2.imshow("Eroded by NumPy kernel",Nperoded)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.cv2.morphologyEx(src, op, kernel) 进行开、闭各类形态学的变化
- 参数说明:src:输入图片,op:进行变化的方式,kernel:表示框的大小
- op = cv2.MORPH_OPEN 进行开运算,指的是先进行腐蚀操作,再进行膨胀操作,作用:用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积; op = cv2.MORPH_CLOSE 进行闭运算, 指的是先进行膨胀操作,再进行腐蚀操作,用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。
- 开运算:表示的是先进行腐蚀,再进行膨胀操作;闭运算:表示先进行膨胀操作,再进行腐蚀操作。
import cv2
import numpy as np
img = cv2.imread('C:/1.jpg')
cv2.imshow('Origin',img)
#定义结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5, 5))
#闭运算
closed = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
#显示腐蚀后的图像
cv2.imshow("Close",closed)
#开运算
opened = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
#显示腐蚀后的图像
cv2.imshow("Open", opened)
cv2.waitKey(0)
cv2.destroyAllWindows()
参考链接:
1.https://blog.csdn.net/qq_25847123/article/details/73744575
2.https://blog.csdn.net/sunny2038/article/details/9137759