OpenCV 腐蚀和膨胀

本文介绍了图像处理中的两种基本形态学操作——腐蚀和膨胀。腐蚀通过结构元素消除图像中的高亮边界点,使目标区域减小,常用于去除噪声。膨胀则是将高亮区域扩张,添补目标中的孔洞,使目标增大。腐蚀和膨胀在图像处理中常用于对象分离、噪声消除和形状变换。示例代码展示了如何使用OpenCV库进行腐蚀和膨胀操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

腐蚀和膨胀是最基本的形态学操作,腐蚀和膨胀都是针对白色部分(高亮部分)而言的。

膨胀就是使图像中高亮部分扩张,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。膨胀是求局部最大值的操作,腐蚀是求局部最小值的操作。

  1. 腐蚀

具体操作是:用一个结构元素扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为1,则该像素为1,否则为0。如下图所示,结构A被结构B腐蚀后:

在这里插入图片描述

腐蚀的作用是:消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点。

cv.erode(img,kernel,iterations)
  • img: 要处理的图像
  • kernel: 核结构
  • iterations: 腐蚀的次数,默认是1
  1. 膨胀

具体操作是:用一个结构元素扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为0,则该像素为0,否则为1。如下图所示,结构A被结构B膨胀后:

在这里插入图片描述

膨胀作用是:将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的孔洞。

cv.dilate(img,kernel,iterations)
  • img: 要处理的图像

  • kernel: 核结构

  • iterations: 膨胀的次数,默认是1

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

# 1 读取图像
img = cv.imread("./1.png")

# 2 创建核结构
kernel = np.ones((5, 5), np.uint8)

# 3 图像腐蚀和膨胀
erosion = cv.erode(img, kernel)  # 腐蚀
dilate = cv.dilate(img, kernel)  # 膨胀

# 4 图像展示
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(10, 8), dpi=100)
axes[0].imshow(img[:, :, ::-1])
axes[0].set_title("原图")
axes[1].imshow(erosion[:, :, ::-1])
axes[1].set_title("腐蚀后结果")
axes[2].imshow(dilate[:, :, ::-1])
axes[2].set_title("膨胀后结果")
plt.show()

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值