腐蚀和膨胀操作室形态学的基础,将其组合就可以形成开运算、闭运算、梯度运算、礼帽运算等。本节主要介绍开运算、闭运算及梯度运算。

通用形态学函数

在前面的两节中,分别介绍了腐蚀和膨胀操作,都有自己独特的函数。在腐蚀和膨胀的基础上,可以实现其他的操作。

OpenCV中提供了通用的形态学函数,语法如下:

dst = cv2.morphologyEx(src,op,kernerl[,anchor[,iterations,[,borderType[,borderValue]]]])

参数选项

开运算

所谓开运算,就是对图像进行先腐蚀再膨胀

开运算可以用来去躁、计数等

仍然要注意核的大小,对效果有显著影响

基本语法

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

使用可选项cv2.MORPH_OPEN

操作效果

import cv2
import numpy as np
img = cv2.imread('E:\Blog\OpenCV/newsu.png',0)   
kernel1 = np.ones((5,5),np.uint8)           
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel1)            
cv2.imshow('IMG',img)
cv2.imshow('OPEN',opening)    
cv2.waitKey()

去躁运算效果

import cv2
import numpy as np
img = cv2.imread('E:\Blog\OpenCV\lian.png',0)   
kernel1 = np.ones((15,15),np.uint8)           
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel1)            
cv2.imshow('IMG',img)
cv2.imshow('OPEN',opening)    
cv2.waitKey()

闭运算

所谓闭运算,就是先膨胀后腐蚀

这有助于关闭前景物体内部的小孔,或去除物体上的小黑点。还可以将不同前景连接到一起。

仍然要注意核的大小,对效果有显著影响

基本语法

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

使用可选项cv2.MORPH_CLOSE

操作效果

import cv2
import numpy as np
img = cv2.imread('E:\Blog\OpenCV\jian1.png',0)   
kernel1 = np.ones((13,13),np.uint8)           
CLOSing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel1)            
cv2.imshow('IMG',img)
cv2.imshow('OPEN',CLOSing)    
cv2.waitKey()

去除黑点

import cv2
import numpy as np
img = cv2.imread(r'E:\Blog\OpenCV\two.png',0)   
kernel1 = np.ones((20,20),np.uint8)           
CLOSing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel1)            
cv2.imshow('IMG',img)
cv2.imshow('CLOSE',CLOSing)    
cv2.waitKey()

闭运算

形态学梯度运算

形态学梯度运算的本质是用图像的膨胀操作减去腐蚀图像,该操作可以获取原始图像中前景图像的边缘。

关键字:cv2.MORPH_GRADIENT

语法:

result  = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

实例:

import cv2
import numpy as np
img = cv2.imread(r'E:\Blog\OpenCV\wangou.png',0)       
kernel2 = np.ones((5,5),np.uint8)        
RESULT = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel2)            
cv2.imshow('IMG',img)
cv2.imshow('RESULT',RESULT)    
cv2.waitKey()

结果


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/OpenCV27.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 06 月 12 日
如果觉得我的文章对你有用,请随意赞赏