python opencv形态学变换:腐蚀与膨胀

来源:互联网 发布:淘宝网改地址怎么改 编辑:程序博客网 时间:2024/05/19 12:18


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


1、腐蚀

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


2、膨胀

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



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

import cv2import  numpy as npimport matplotlib.pyplot as pltdef nothing(x):    passcv2.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)        #判断是腐蚀还是膨胀


最后实现效果图:




原创粉丝点击