高度な処理(モルフォロジー勾配・トップハット・ブラックハット)
モルフォロジー勾配は、膨張と収縮の差を出力とする処理です。
cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)
トップハットは、入力とオープニングした結果の差を出力とする処理です。
cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)
ブラックハットは、入力とクロージングした結果の差を出力とする処理です。
cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)
サンプルコード
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('image.png', 0)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
kernel = np.ones((3, 3), np.uint8)
gradient = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)
kernel = np.ones((11, 11), np.uint8)
tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)
blackhat = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)
plt.subplot(1, 4, 1)
plt.title('original')
plt.xticks([]), plt.yticks([])
plt.imshow(image)
plt.subplot(1, 4, 2)
plt.title('gradient')
plt.xticks([]), plt.yticks([])
plt.imshow(gradient)
plt.subplot(1, 4, 3)
plt.title('tophat')
plt.xticks([]), plt.yticks([])
plt.imshow(tophat)
plt.subplot(1, 4, 4)
plt.title('blackhat')
plt.xticks([]), plt.yticks([])
plt.imshow(blackhat)
plt.show()