Opencv:形态学腐蚀、膨胀Python实现

Opencv:形态学腐蚀、膨胀Python实现

一、内容

膨胀腐蚀图像形态学最基础的两个操作,形态学的其它操作都是基于这两个操作基础上得到的,图像形态学是二值图像分析的重要分支学科。在OpenCV中膨胀与腐蚀对应两个相关的API,膨胀可以看成是最大值滤波,即用最大值替换中心像素点腐蚀可以看出是最小值滤波,即用最小值替换中心像素点

膨胀的API如下:

void cv::dilate(
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor = Point(-1,-1),
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue()
)

src 输入图像,任意通道的
dst 输出图像,类型与通道数目必须跟输入保持一致
kernel 结构元素
anchor 中心位置锚定
iterations 循环次数
borderType 边缘填充类型

腐蚀的API如下:

void cv::erode(
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor = Point(-1,-1),
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue()
)
src 输入图像,任意通道的
dst 输出图像,类型与通道数目必须跟输入保持一致
kernel 结构元素
anchor 中心位置锚定
iterations 循环次数
borderType 边缘填充类型

二、代码

import cv2 as cv
import numpy as np

# 读取图像
src = cv.imread("D:/vsprojects/images/abc.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)

# 使用13x13结构元素进行膨胀与腐蚀操作
se = np.ones((13, 13), dtype=np.uint8)
# 膨胀
dilate = cv.dilate(src, se, None, (-1, -1), 1)
# 腐蚀
erode = cv.erode(src, se, None, (-1, -1), 1)

# 显示
cv.imshow("dilate", dilate)
cv.imshow("erode", erode)
cv.imwrite("D:/dilate.png", dilate)
cv.imwrite("D:/erode.png", erode)
cv.waitKey(0)
cv.destroyAllWindows()

三、结果

1.原始图像

在这里插入图片描述

2.膨胀结果

在这里插入图片描述

3.腐蚀结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值