OpenCV+Python图像形态学操作

形态学-腐蚀操作

import cv2
img = cv2.imread('D:\\Desktop\\opencv\\dizai.jpg')
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

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

#腐蚀一次
kernel = np.ones((3,3),np.uint8) 
#np.ones(3,3)表示腐蚀的单位区域的大小
erosion = cv2.erode(img,kernel,iterations = 1)
# iterations表示腐蚀次数
cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

腐蚀一次效果:
在这里插入图片描述
示例2:

kernel = np.ones((30,30),np.uint8) 
erosion_1 = cv2.erode(circle,kernel,iterations = 1) #腐蚀一次
erosion_2 = cv2.erode(circle,kernel,iterations = 2) #腐蚀两次
erosion_3 = cv2.erode(circle,kernel,iterations = 3) #腐蚀三次
res = np.hstack((erosion_1,erosion_2,erosion_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:

在这里插入图片描述

形态学-膨胀操作

#先腐蚀3次看一下效果
kernel = np.ones((3,3),np.uint8) 
dige_erosion = cv2.erode(img,kernel,iterations = 3)

cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

#膨胀5次的效果
kernel = np.ones((3,3),np.uint8) 
dige_dilate = cv2.dilate(dige_erosion,kernel,iterations = 5)

cv2.imshow('dilate', dige_dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
示例2:

circle = cv2.imread('D:\\Desktop\\opencv\\circle.jpg')

kernel = np.ones((30,30),np.uint8) 
dilate_1 = cv2.dilate(circle,kernel,iterations = 1)
dilate_2 = cv2.dilate(circle,kernel,iterations = 2)
dilate_3 = cv2.dilate(circle,kernel,iterations = 3)
res = np.hstack((dilate_1,dilate_2,dilate_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:

在这里插入图片描述

开运算与闭运算

# 开:先腐蚀,再膨胀
img = cv2.imread('D:\\Desktop\\opencv\\dizai.jpg')

kernel = np.ones((5,5),np.uint8) 
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:
在这里插入图片描述

# 闭:先膨胀,再腐蚀 
img = cv2.imread('D:\\Desktop\\opencv\\dizai.jpg')
kernel = np.ones((5,5),np.uint8) 
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:
在这里插入图片描述

梯度运算

梯度=膨胀-腐蚀

#显示膨胀和腐蚀效果
pie = cv2.imread('D:\\Desktop\\opencv\\circle.jpg')
kernel = np.ones((7,7),np.uint8) 
dilate = cv2.dilate(pie,kernel,iterations = 5)
erosion = cv2.erode(pie,kernel,iterations = 5)

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

cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

#梯度运算=膨胀-腐蚀
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)

cv2.imshow('gradient', gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

礼帽与黑帽

  • 礼帽 = 原始输入-开运算结果
  • 黑帽 = 闭运算-原始输入
#礼帽
img = cv2.imread('D:\\Desktop\\opencv\\dizai.jpg')
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

#黑帽
img = cv2.imread('D:\\Desktop\\opencv\\dizai.jpg')
blackhat  = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat ', blackhat )
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

万里守约

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

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

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

打赏作者

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

抵扣说明:

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

余额充值