形态学-梯度计算

依赖库

首先,我们需要导入必要的库:

import cv2
import numpy as np
  • cv2 是OpenCV的Python接口,用于图像处理。
  • numpy 是一个用于科学计算的库,我们用它来创建结构元素。

显示图像的函数

我们定义了一个函数 show_img 来显示图像:

def show_img(name, img):
    cv2.imshow(name, img)  # 使用OpenCV的imshow函数显示图像
    cv2.waitKey(0)  # 等待任意键被按下
    cv2.destroyAllWindows()  # 关闭所有OpenCV创建的窗口

读取图像

使用 cv2.imread 函数读取图像文件,并将其转换为灰度图像:
在这里插入图片描述

img = cv2.imread('sun.jpg', cv2.IMREAD_GRAYSCALE)

请确保将 'sun.jpg' 替换为您要处理的图像文件的实际路径和文件名。

应用二值化阈值处理

应用二值化阈值处理,将灰度图像转换为二值图像:
在这里插入图片描述

ret, ref = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
  • 127 是阈值。
  • 255 是最大值。
  • cv2.THRESH_BINARY_INV 表示反转二值化。

创建结构元素

创建一个3x3的结构元素用于形态学操作:

kernel = np.ones((3, 3), np.uint8)

膨胀和腐蚀操作

使用结构元素对图像进行膨胀和腐蚀操作:

# 使用结构元素对图像进行膨胀操作
dilate = cv2.dilate(ref, kernel, iterations=5)

# 使用结构元素对图像进行腐蚀操作
erode = cv2.erode(ref, kernel, iterations=5)

堆叠图像

将膨胀和腐蚀后的图像水平堆叠在一起:

res = np.hstack((dilate, erode))

显示堆叠后的图像

使用之前定义的 show_img 函数来显示堆叠后的图像:
在这里插入图片描述

show_img('res', res)

计算梯度(梯度 = 膨胀 - 腐蚀)

使用结构元素计算图像的梯度:

gradient = cv2.morphologyEx(ref, cv2.MORPH_GRADIENT, kernel)

显示梯度图像

显示计算得到的梯度图像:
在这里插入图片描述
最后得到的是,膨胀的边缘

show_img('gradient', gradient)
👇 源码资料获取 · 技术与交流 👇

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宇宙第一小趴菜

感谢宝的支持,有宝是吾生之幸

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

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

打赏作者

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

抵扣说明:

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

余额充值