1. 程式人生 > >OpenCV開運算(Opening)閉運算(Closing)形態梯度(Gradient)TopHat、BlackHat

OpenCV開運算(Opening)閉運算(Closing)形態梯度(Gradient)TopHat、BlackHat

程式碼位置:15-OpeningClosingGradientTophatBlackhat.py

import cv2

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
img = cv2.imread('./res/jeep.jpeg')
cv2.imshow('org', img)

opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel, iterations=2)
cv2.imshow('open', opening)

closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations=2)
cv2.imshow('close', closing)

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

tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)

blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat', blackhat)

cv2.waitKey(0)
cv2.destroyAllWindows()
  • Opening開運算:先腐蝕再開放叫開運算,作用能消除圖片上的小標點。
  • Closing閉運算:線膨脹後腐蝕。作用是消除圖片上的小黑點。
  • Gradient 用於獲取圖片的輪廓,形態梯度圖 = 彭長圖 - 腐蝕圖
  • Top Hat = 原圖 - 開運算圖,顯示出原圖去除掉的白色部分。
  • Black Hat = 原圖 - 閉運算, 顯示出原圖去除掉的黑色部分。

效果圖:
在這裡插入圖片描述