【OpenCV】腐蚀、膨胀及实战

一、简介

  腐蚀与膨胀是形态学两个基本操作
  图像形态学:
  是图像处理学科的一个独立分支。主要用来处理灰度和二值图像。,也可用来处理彩色图像

  形态学操作的基础:

               在这里插入图片描述

1.1 膨胀

  前提: 结构元素/模板,通常3×3大小。(膨胀和腐蚀,都支持任意形状的结构元素/模板)
          在这里插入图片描述
  膨胀:用结构元素/模板在图像中滑动,结构元素/模板覆盖的图像块中最大像素值替换图像块的中间像素值
  膨胀作用:
  (1)对象大小增加一个像素(模板为3×3时)
  (2)平滑对象边缘
  (3)减少或者填充对象之间的距离。

1.2 腐蚀

  前提: 结构元素/模板,通常3×3大小。(膨胀和腐蚀,都支持任意形状的结构元素/模板)
         在这里插入图片描述
  腐蚀:用结构元素/模板在图像中滑动,结构元素/模板覆盖的图像块中最小像素值替换图像块的中间像素值
  腐蚀作用:
  (1)对象大小减小1个像素(模板大小为3×3时)
  (2)平滑对象边缘
  (3)弱化或者分割图像之间的半岛形连接

二、实践

2.1 灰度图

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
'''腐蚀'''
def erode_demo(image):

    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    #结构元素/模板
    kernel=cv.getStructuringElement(cv.MORPH_RECT,(3,3))
    #腐蚀
    dst=cv.erode(binary,kernel)
    cv.imshow('erode',dst)
'''膨胀'''
def dilate_demo(image):
    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    #结构元素/模板
    kernel=cv.getStructuringElement(cv.MORPH_RECT,(10,10))
    #膨胀
    dst=cv.erode(binary,kernel)
    cv.imshow('dilate',dst)
img = cv.imread(r'D:\Project\Opencv\Learning01\number.jpg')
cv.imshow('origin',img)
erode_demo(img)
dilate_demo(img)
cv.waitKey(0)

在这里插入图片描述

2.2 彩色图

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
'''对彩色图进行腐蚀和膨胀'''

img = cv.imread(r'D:\Project\Opencv\Learning01\angelababy.jpg')
cv.imshow('origin',img)
kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5))
dst1=cv.erode(img,kernel)
dst2=cv.dilate(img,kernel)
cv.imshow('erode',dst1)
cv.imshow('dilate',dst2)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值