0
点赞
收藏
分享

微信扫一扫

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

开源分享 2022-04-03 阅读 73
opencvpython

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 条评论