膨脹處理與縮小處理

膨脹處理是指把一個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]]的行列式的話就只有上下左右會改變

原圖

kemofure.jpg

經過膨脹處理 (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]))

dilate.jpg

經過縮小處理

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]))

erode.jpg

 

 
相關文章