openCV编程基础22--腐蚀与膨胀

主要功能:

对彩色/灰度/二值图像进行腐蚀与膨胀运算

腐蚀的作用
对象大小减少一个像素(3*3)
平滑对象边缘
弱化或者分割图像之间的半岛型连接
膨胀的作用
对象大小增加一个像素(3*3)
平滑对象边缘
减少或者填充对象之间的距离
import cv2 as cv
import numpy as np


# 腐蚀
def erode_demo(image):
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) #图像转灰度图
    # 将灰度图转为二值图 ret是阈值 binary是二值图
    ret, binary = cv.threshold(gray, 0 ,255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow('binary', binary)      # 显示二值图像
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))  # 定义覆盖区域的大小
    dst = cv.erode(binary, kernel)                 # 腐蚀操作
    cv.imshow("erode_demo", dst)


# 膨胀
def expand_demo(image):
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) #图像转灰度图
    # 将灰度图转为二值图 ret是阈值 binary是二值图
    ret, binary = cv.threshold(gray, 0 ,255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow('binary', binary)      # 显示二值图像
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))  # 定义覆盖区域的大小
    dst = cv.dilate(binary, kernel)                 # 膨胀操作
    cv.imshow("expand_demo", dst)


# 对彩色图像膨胀腐蚀
def color_demo(image):
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))  # 定义覆盖区域的大小
    dst1 = cv.erode(image, kernel)                  # 腐蚀操作
    dst2 = cv.dilate(image, kernel)                 # 膨胀操作
    cv.imshow('color_fushi', dst1)
    cv.imshow('color_pengzhang', dst2)

src = cv.imread('F:001.jpg')
#cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)
cv.imshow("0", src)
erode_demo(src)
expand_demo(src)
color_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值