形态学操作

显示图像

def display(img):
	cv2.imshow("img",img)
	cv2.waitKey()
	cv2.destroyAllWindows()

在这里插入图片描述

腐蚀操作

def erode_(img):
	kernel = np.ones((5,5),np.uint8)
	erodesion = cv2.erode(img,kernel,iterations=1)
	display(erodesion)

在这里插入图片描述

膨胀操作

def dilate_(img):
	kernel = np.ones((3,3),np.uint8)
	erodesion = cv2.dilate(img,kernel,iterations=2)
	display(erodesion)

在这里插入图片描述

开运算,先腐蚀后膨胀

def morphologyEx_open(img):
	kernel = np.ones((5,5),np.uint8)
	opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel,iterations=1)
	display(opening)

在这里插入图片描述

闭运算,先膨胀后腐蚀

def morphologyEx_close(img):
	kernel = np.ones((5,5),np.uint8)
	closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel,iterations=2)
	display(closing)

在这里插入图片描述

梯度运算,膨胀-腐蚀(得到边缘)

def gradient_(img):
	kernel = np.ones((5,5),np.uint8)
	gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
	display(gradient)

在这里插入图片描述

礼帽,原始-开运算

def morphologyEx_top_hat(img):
	kernel = np.ones((5,5),np.uint8)
	top_hat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel,iterations=1)
	display(top_hat)

在这里插入图片描述

黑帽,闭运算-原始

def morphologyEx_black_hat(img):
	kernel = np.ones((5,5),np.uint8)
	black_hat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel,iterations=1)
	display(black_hat)

在这里插入图片描述

素材

在这里插入图片描述
在这里插入图片描述

完整代码

# -*- coding:utf-8 -*-
import numpy as np
import cv2
# 显示图像
def display(img):
	cv2.imshow("img",img)
	cv2.waitKey()
	cv2.destroyAllWindows()
# 腐蚀操作
def erode_(img):
	kernel = np.ones((5,5),np.uint8)
	erodesion = cv2.erode(img,kernel,iterations=1)
	display(erodesion)
# 膨胀操作
def dilate_(img):
	kernel = np.ones((3,3),np.uint8)
	erodesion = cv2.dilate(img,kernel,iterations=2)
	display(erodesion)
# 开运算,先腐蚀后膨胀
def morphologyEx_open(img):
	kernel = np.ones((5,5),np.uint8)
	opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel,iterations=1)
	display(opening)
# 闭运算,先膨胀后腐蚀
def morphologyEx_close(img):
	kernel = np.ones((5,5),np.uint8)
	closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel,iterations=2)
	display(closing)
# 梯度运算,膨胀-腐蚀
def gradient_(img):
	kernel = np.ones((5,5),np.uint8)
	gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
	display(gradient)
# 礼帽,原始-开运算
def morphologyEx_top_hat(img):
	kernel = np.ones((5,5),np.uint8)
	top_hat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel,iterations=1)
	display(top_hat)
# 黑帽,闭运算-原始
def morphologyEx_black_hat(img):
	kernel = np.ones((5,5),np.uint8)
	black_hat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel,iterations=1)
	display(black_hat)
def main():
    pic = "get1.png"
    pic1 = "a.png"
    img = cv2.imread(pic)
    img1 = cv2.imread(pic1)
    display(img)
    erode_(img)
    dilate_(img)
    morphologyEx_open(img)
    morphologyEx_close(img)
    gradient_(img1)
    morphologyEx_top_hat(img)
    morphologyEx_black_hat(img)
if __name__  == "__main__":
    main()

说明

背景黑色,内容白色如图所示,腐蚀,膨胀白色区域。
如果背景白色,内容黑色会相反。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Matlab中的形态学操作主要有膨胀、腐蚀、开运算、闭运算、骨架提取等。 1. 膨胀操作: 膨胀操作是一种图像处理中常用的形态学操作,它可以将图像中的物体进行膨胀,使物体的边界向外扩张。膨胀操作可以用于填充图像中的空洞、连接相邻物体等。 使用Matlab中的imdilate函数进行膨胀操作,例如: ```matlab img = imread('lena.jpg'); se = strel('disk', 5); img_dilate = imdilate(img, se); imshow(img_dilate); ``` 其中,img是待处理的图像,se是膨胀操作的结构元素,可以是各种形状,例如矩形、圆形等。上述代码中,我们使用了一个半径为5的圆形结构元素进行膨胀操作。 2. 腐蚀操作: 腐蚀操作是一种图像处理中常用的形态学操作,它可以将图像中的物体进行腐蚀,使物体的边界向内收缩。腐蚀操作可以用于去除图像中的噪声、分离相邻物体等。 使用Matlab中的imerode函数进行腐蚀操作,例如: ```matlab img = imread('lena.jpg'); se = strel('disk', 5); img_erode = imerode(img, se); imshow(img_erode); ``` 其中,img是待处理的图像,se是腐蚀操作的结构元素,可以是各种形状,例如矩形、圆形等。上述代码中,我们使用了一个半径为5的圆形结构元素进行腐蚀操作。 3. 开运算操作: 开运算操作是一种图像处理中常用的形态学操作,它可以先进行腐蚀操作,再进行膨胀操作,用于去除图像中的噪声、平滑物体的边缘等。 使用Matlab中的imopen函数进行开运算操作,例如: ```matlab img = imread('lena.jpg'); se = strel('disk', 5); img_open = imopen(img, se); imshow(img_open); ``` 其中,img是待处理的图像,se是开运算操作的结构元素,可以是各种形状,例如矩形、圆形等。上述代码中,我们使用了一个半径为5的圆形结构元素进行开运算操作。 4. 闭运算操作: 闭运算操作是一种图像处理中常用的形态学操作,它可以先进行膨胀操作,再进行腐蚀操作,用于填充图像中的空洞、平滑物体的边缘等。 使用Matlab中的imclose函数进行闭运算操作,例如: ```matlab img = imread('lena.jpg'); se = strel('disk', 5); img_close = imclose(img, se); imshow(img_close); ``` 其中,img是待处理的图像,se是闭运算操作的结构元素,可以是各种形状,例如矩形、圆形等。上述代码中,我们使用了一个半径为5的圆形结构元素进行闭运算操作。 5. 骨架提取: 骨架提取是一种图像处理中常用的形态学操作,它可以将图像中的物体提取出来,得到物体的骨架结构。骨架提取可以用于医学图像分析、机器人视觉等领域。 使用Matlab中的bwmorph函数进行骨架提取操作,例如: ```matlab img = imread('lena.jpg'); img_bw = im2bw(img); img_skel = bwmorph(img_bw, 'skel', Inf); imshow(img_skel); ``` 其中,img是待处理的图像,先将图像转换为二值图像img_bw,然后使用bwmorph函数进行骨架提取操作,‘skel’表示提取骨架结构,Inf表示提取到最细的骨架结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佐倉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值