【OpenCV-Python】11 腐蚀与膨胀

代码

# -*- coding: utf-8 -*-
"""
Created on Fri Dec 25 16:13:13 2020

@author: gkm0120
"""
import cv2
import numpy as np

# 1.腐蚀与膨胀
img = cv2.imread('j.bmp', 0)
kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(img, kernel)  # 腐蚀(局部最小值)
dilation = cv2.dilate(img, kernel)  # 膨胀(局部最大值)
cv2.imshow('erosion/dilation', np.hstack((img, erosion, dilation)))
cv2.waitKey(0)


# 2.定义结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))  # 矩形结构
print(kernel)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))  # 椭圆结构
print(kernel)
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))  # 十字形结构
print(kernel)

# 3.开运算与闭运算
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))  # 定义结构元素
# 开运算(先腐蚀后膨胀)
img = cv2.imread('j_noise_out.bmp', 0)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow('opening', np.hstack((img, opening)))
cv2.waitKey(0)

# 闭运算(先膨胀后腐蚀)
img = cv2.imread('j_noise_in.bmp', 0)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow('closing', np.hstack((img, closing)))
cv2.waitKey(0)

# 4.形态学梯度(膨胀图减去腐蚀图)
img = cv2.imread('lena.jpg', 0)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
cv2.imshow('morphological gradient', np.hstack((img, gradient)))
cv2.waitKey(0)

# 5.顶帽(原图减去开运算后的图)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('top hat', np.hstack((img, tophat)))
cv2.waitKey(0)

# 6.黑帽(闭运算后的图减去原图)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('black hat', np.hstack((img, blackhat)))
cv2.waitKey(0)

其中

j
j_noise_in
j_noise_out

图例

腐蚀膨胀开闭运算

erosion/dilation
opening
closing

形态学梯度、顶帽、黑帽

morphological gradient
top hat
black hat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值