开闭运算

2022-05-28 16:14:12 浏览数 (1)

代码语言:javascript复制
import cv2
import numpy as np
o=cv2.imread("C:/Users/xpp/Desktop/Lena.png")#原始图像
kernel=np.ones((10,10),np.uint8)#设置核kernel
r=cv2.morphologyEx(o,cv2.MORPH_OPEN,kernel)#开运算
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindos()

算法:开运算是先将图像腐蚀,再对腐蚀的结果进行膨胀,与腐蚀相似,但与腐蚀相比,具有基本保持原始图像大小不变的优点。开运算可以用于去噪、计数等,比如在纤细处分离物体、平滑较大物体的边界的同时并不明显改变其面积。闭运算是先将图像膨胀、后腐蚀的运算,可以关闭前景物体内部的小孔,也去除物体上的小黑点,还将不同的前景图像进行连接。闭运算平滑边界的同时不明显改变其面积。

对于图像A和结构元素S:

A○S

开运算:

A○S=(AΘS)⊕S

闭运算:

A●S=(A⊕S)ΘS

opening=cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

  • img表示输入图像
  • cv2.MORPH_OPEN表示开运算
  • kernel表示开运算操作时所采用的结构类型

closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

  • img表示输入图像
  • cv2.MORPH_CLOSE表示闭运算
  • kernel表示闭运算操作时所采用的结构类型

0 人点赞