OpenCV计算机视觉实战(Python)| 04、图像形态学处理

文章目录

  • 简介
  • 总结
    • 形态学-腐蚀操作
    • 形态学-膨胀操作
    • 形态学-开/闭操作
      • 开运算
      • 闭运算
    • 梯度运算
    • 礼帽和黑帽

简介

本节为《OpenCV计算机视觉实战(Python)》版第四讲,图像形态学处理,的总结。

总结

形态学-腐蚀操作

img = cv2.imread('dige.png')

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

kernel = np.ones((5,5), np.unit8)
erosion = cv2.erode(pie, kernel, iter=1)

cv2.imshow('img_erode', erosion)
cv2.waitKey(0)
cv2.destroyAllWindow()
  1. 腐蚀操作去除毛刺
  2. 腐蚀操作中的参数:kernel 表示卷积核,iter表示腐蚀操作的次数。
  3. 腐蚀的结果,与,迭代次数,核大小有关系。腐蚀次数增大,图像线条会变细。

形态学-膨胀操作

img = cv2.imread('dige.png')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

kernel = np.ones((5,5), np.uint8)
dilate = cv2.dilate(img, kernel, iter=1)

cv2.imshow('dilate', dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 与腐蚀操作互为逆运算
  2. 参数的定义与腐蚀操作一致

形态学-开/闭操作

开运算

img = cv2.imread('dige.png')
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()

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

cv2.imshow('opening', opening)
cv2.waitKey()
cv2.destroyAllWindows()
  1. 先腐蚀,再膨胀
  2. 能够有效去除毛刺

闭运算

img = cv2.imread('dige.png')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 先膨胀,再腐蚀
  2. 无法去除毛刺,只是扩大了边缘

梯度运算

# 梯度 = 膨胀 - 腐蚀
pie = cv2.imread('pie.png')
kernel = np.ones((7,7),np.unit8)
dilate = cv2.dilate(pie,kernel, iter=5)
erosion = cv2.erode(pie,kernel, iter=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()

  1. 梯度 = 膨胀 - 腐蚀
  2. 梯度运算可以得到轮廓

礼帽和黑帽

  • 礼帽 = 原始输入 - 开运算结果(带刺的-没刺的,剩下的是刺)
  • 黑帽 = 闭运算 - 原始输入(扩大后的刺-带刺的,剩下的是膨胀的刺的轮廓)

img = cv2.imread('dige.png')

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

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

你可能感兴趣的:(OpenCV,Computer,Vision)