opencv-python(七):形态学处理

形态学操作是对图像形状的简单操作,通常需要两个输入:原始图像和结构元素(核)。基本的形态学操作包括腐蚀、膨胀、开、闭、顶帽、黑帽等。其中,基本的形态学操作是腐蚀和膨胀,其余的都是这两种操作的变形。

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('j.png', 0)
kernel = np.ones((5, 5), np.int8)

erosion = cv.erode(img, kernel, iterations = 1)
dilation = cv.dilate(img, kernel, iterations = 1)
opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)
closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)
gradient = cv.morphologyEx(img, cv.MORPH_GRADIENT, kernel)
tophat = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel)
blackhat = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel)

images = [img, erosion,
          dilation, opening,
          closing, gradient,
          tophat, blackhat]

titles = ['orignal', 'erosion',
          'dilation','opening',
          'closing', 'gradient',
          'tophat', 'blackhat']

for i in xrange(4):
    plt.subplot(4, 2, i * 2 + 1), plt.imshow(images[i * 2], 'gray')
    plt.title(titles[i*2]),plt.xticks([]), plt.yticks([])
    plt.subplot(4, 2, i * 2 + 2), plt.imshow(images[i * 2 + 1], 'gray')
    plt.title(titles[i * 2 + 1]), plt.xticks([]), plt.yticks([])

plt.show()

效果如下:


猜你喜欢

转载自blog.csdn.net/sinat_31425585/article/details/80244062