Python OpenCV3 膨脹(dilation) 收縮(erosion)
膨脹處理與縮小處理
膨脹處理是指把一個pixel如果是1他的四面八方也會因為膨脹而變成1
縮小處理則是把1的周圍變成0
主要用3×3的行列式來定義例如
[[1, 1, 1]
[1, 1, 1]
[1, 1, 1]]
的行列式的話就是四面八方都會改變
但是
[[0, 1, 0]
[1, 1, 1]
[0, 1, 0]]的行列式的話就只有上下左右會改變
原圖
經過膨脹處理 (5次)
import numpy as np import cv2 try: img = cv2.imread('kemofure.jpg') if img is None: print('Fail') import sys sys.exit() kernal = np.ones((3, 3), np.uint8) dst = cv2.dilate(img, kernal, iterations = 5) cv2.imwrite('dilate.jpg', dst) cv2.waitKey(10) cv2.destroyAllWindows() cv2.waitKey(1) except: import sys print("Error: ", sys.exc_info()[0]) print(sys.exc_info()[1]) import traceback print(traceback.format_tb(sys.exc_info()[2]))
經過縮小處理
import numpy as np import cv2 try: img = cv2.imread('kemofure.jpg') if img is None: print('Fail') import sys sys.exit() kernal = np.ones((3, 3), np.uint8) dst = cv2.erode(img, kernal, iterations = 5) cv2.imwrite('dilate.jpg', dst) cv2.waitKey(10) cv2.destroyAllWindows() cv2.waitKey(1) except: import sys print("Error: ", sys.exc_info()[0]) print(sys.exc_info()[1]) import traceback print(traceback.format_tb(sys.exc_info()[2]))