OpenCV:图像的腐蚀和膨胀

本文介绍了OpenCV中图像的腐蚀和膨胀操作,这些操作基于卷积原理,可以改变图像中黑白区域的大小。通过示例代码展示了如何生成不同形状的核,如正方形、椭圆和十字形,并应用到图像腐蚀和膨胀上。文章以朱茵图片为例,展示了膨胀效果。

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

图像的腐蚀和膨胀实际上是利用卷积进行计算,首先导包:

import numpy as np
import cv2
import matplotlib.pyplot as plt
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show()
def imread(image):
    image=cv2.imread(image)
    image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image

然后生成一个正方形的核:

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
print(kernel)

输出:

[[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]

当然我们作运算的时候都是使用的正方形的核,这里也展示下生成椭圆核的方法:

kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(10,10))#这里生成的是椭圆
print(kernel)

生成十字形的核:

kernel=cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))#这里生成的是十字形
print(kernel)

利用卷积进行图像的腐蚀:可以使黑色的点变大

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(10,10))
ero=cv2.erode(image,kernel)
show(ero)

循环进行多次腐蚀:

show(image)
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(10,10))
for i in range(2):
    ero=cv2.erode(image,kernel,iterations=i+1)
    show(ero)

图像的膨胀,使白色的点变大,用于去除图像当中的黑点:

show(image)#利用卷积将图像进行膨胀,求解的是区域最大值,腐蚀则是求解的区域最小值
dilation=cv2.dilate(image,kernel)
show(dilation)#用于去除图像当中黑色的小点

循环去除:

image=imread('123.jpg')
show(image)
kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(21,21))
for i in range(3):
    ero=cv2.erode(image,kernel,iterations=i+1)
    show(dilation)

下面是处理朱茵图片进行膨胀的效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值