OpenCV初尝试7——形态学操作

7 形态学操作

7.1 腐蚀

  • cv2.erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
import cv2
import numpy as np

#传入二值图像
img = imread('./img.png')
#卷积核越大,腐蚀范围越大
kernel = np.ones((5, 5), np.uint8)
#iterations:表示迭代几次,即执行几次腐蚀操作
erosion = cv2.erode(img, kernel, iterations=1)

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

7.2 膨胀

  • cv2.dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
import cv2
import numpy as np

#传入二值图像
img = imread('./img.png')

kernel = np.ones((5, 5), np.uint8)
#iterations:表示迭代几次,即执行几次膨胀操作
dilate = cv2.dilate(img, kernel, iterations=1)

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

膨胀与腐蚀可以相互弥补。

7.3 开运算与闭运算

  • cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
  • 由参数op选择进行开闭运算
  • 开运算:先腐蚀,后膨胀
  • 闭运算:先膨胀,后腐蚀
import cv2
import numpy as np

#传入二值图像
img = imread('./img.png')

kernel = np.ones((5, 5), np.uint8)
#开运算
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
#闭运算
closing = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imshow('opening', opening)
cv2.imshow('closing', closing)

cv2.waitKey(0)
cv2.destroyAllWindows()

7.4 梯度计算

跟开闭运算的API相同,还是op发生了改变.

  • cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
  • 梯度 = 膨胀 - 腐蚀
import cv2
import numpy as np

#传入二值图像
img = imread('./img.png')

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

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

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

7.5 礼帽与黑帽

  • cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
  • 礼帽 = 原始输入 - 开运算结果
  • 黑帽 = 闭运算 - 原始输入
import cv2
import numpy as np

#传入二值图像
img = imread('./img.png')

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

#礼帽
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
#黑帽
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

cv2.imshow('hat', np.hstack((tophat, blackhat)))
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值