python opencv形态学变换:腐蚀、膨胀、开运算、闭运算

目录

1、腐蚀

2、膨胀

3、开运算

4、闭运算


 

在学习这一部分之前,我们必须先有个明确的膨胀和腐蚀的概念,就上图而言,膨胀和腐蚀都是针对白色部分而不是黑色部分,膨胀就是白色区域扩大,腐蚀就是白色区域缩小

 

1、腐蚀

要进行腐蚀操作,我们要用到cv2.erode()函数,然后为其指定源图像和卷积核,效果看下面

2、膨胀

膨胀需要用到cv2.dilate()函数,同样为其指定源图像以及卷积核,效果如下:

 

下面结合之前学过的滚动条实现动态侵蚀与膨胀的功能,代码如下:

import cv2
import  numpy as np
import matplotlib.pyplot as plt

def nothing(x):
    pass

cv2.namedWindow('image')



img=cv2.imread('images/111.jpg')
cv2.namedWindow('image')
cv2.createTrackbar('Er/Di','image',0,1,nothing)
#创建腐蚀或膨胀选择滚动条,只有两个值
cv2.createTrackbar('size','image',0,21,nothing)
#创建卷积核大小滚动条


while(1):
    s = cv2.getTrackbarPos('Er/Di', 'image')
    si=cv2.getTrackbarPos('size','image')
    #分别接收两个滚动条的数据
    k=cv2.waitKey(1)

    kernel = np.ones((si,si), np.uint8)
    #根据滚动条数据确定卷积核大小
    erroding = cv2.erode(img, kernel)
    dilation = cv2.dilate(img, kernel)
    if k==27:
        break
    #esc键退出
    if s==0:
        cv2.imshow('image',erroding)
    else:
        cv2.imshow('image',dilation)
        #判断是腐蚀还是膨胀

 

 

最后实现效果图:

开操作和闭操作主要是使用膨胀腐蚀两个基本的操作实现。

3、开运算

  • 开运算是对图像先腐蚀后膨胀
  • 开运算的主要作用是可以去除孤立的小点,在纤细处进行分割

4、闭运算

  • 闭运算是对图像先膨胀后腐蚀
  • 闭运算的作用是填平小洞,小裂隙

 

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值