膨胀处理与缩小处理

膨胀处理是指把一个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

 

 
相关文章