图像的形态学速成

1.图像的读取

由于opencv的兼容性没有Image强,所以建议读取图像时用Image来进行读取,而不用opencv来进行读取,但opencv对图像的操作性强,所以可以先对图像进行Image读取再转化为opencv的对象,如

from PIL import Image
import cv2
import numpy as np

# 打开PIL图像
pil_img = Image.open("1.png")

# 转换为OpenCV格式(RGB → BGR)
opencv_img = np.array(pil_img)
opencv_img = cv2.cvtColor(opencv_img, cv2.COLOR_RGB2BGR)

# 现在可以使用OpenCV函数处理图像
cv2.imshow("OpenCV Image", opencv_img)
cv2.waitKey(0)

代码所示

2.图像的腐蚀操作代码


kernel=np.ones((3,3),np.uint8)
erosion=cv2.erode(opencv_img,kernel,iterations=1)
cv2.imshow("erosion", erosion)
cv2.waitKey(0)

3.图像的膨胀操作代码

kernel=np.ones((3,3),np.uint8)
dilation=cv2.dilate(opencv_img,kernel,iterations=1)
cv2.imshow("dilation", dilation)
cv2.waitKey(0)

4.图像的开运算代码

kernel=np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(opencv_img, cv2.MORPH_OPEN, kernel)
cv2.imshow("opening", opening)
cv2.waitKey(0)

5.图像的闭运算操作代码

kernel=np.ones((3,3),np.uint8)
closing = cv2.morphologyEx(opencv_img, cv2.MORPH_CLOSE, kernel)
cv2.imshow("closing", closing)
cv2.waitKey(0)

6.图像的梯度计算操作代码

img3=cv2.erode(opencv_img1,kernel,iterations=1)
img4=cv2.dilate(opencv_img1,kernel,iterations=1)
res=np.hstack([img3,img4])
cv2.imshow("img3", res)
cv2.waitKey(0)
gradient=cv2.morphologyEx(opencv_img1,cv2.MORPH_GRADIENT,kernel)
cv2.imshow("gradient", gradient)
cv2.waitKey(0)

7.图像的顶帽与黑帽

tophat=cv2.morphologyEx(opencv_img,cv2.MORPH_TOPHAT,kernel)
cv2.imshow("tophat", tophat)
cv2.waitKey(0)
blackhat=cv2.morphologyEx(opencv_img,cv2.MORPH_BLACKHAT,kernel)
cv2.imshow("blackhat", blackhat)

8.顶帽与黑帽的比较

特性顶帽变换(Top Hat)黑帽变换(Black Hat)
数学公式原图像 - 开运算结果闭运算结果 - 原图像
提取目标比背景亮的区域(如亮噪声、亮线条)比前景暗的区域(如暗孔洞、暗边缘)
应用场景背景均衡化、亮物体检测、文档扫描优化细节增强、孔洞检测、深色文本提取
视觉效果暗背景上的亮区域更突出亮前景中的暗区域更突出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值