Python openCV モルフォロジー変換
モルフォロジー変換こちらをやってみた
収縮(Erosion)と膨張(Dilation)、およびそれを組み合わせて輪郭を取り出したり、欠点を消したり強調することができる。
plt.subplot(331)の引数は(行、列、何番目)を表す。matplotlib入門こちらを参照した。
収縮(Erosion)と膨張(Dilation)、およびそれを組み合わせて輪郭を取り出したり、欠点を消したり強調することができる。
plt.subplot(331)の引数は(行、列、何番目)を表す。matplotlib入門こちらを参照した。
import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('pic.png') kernel = np.ones((5,5),np.uint8) erosion = cv2.erode(img,kernel,iterations = 1) dilation = cv2.dilate(img,kernel,iterations = 1) opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel) tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel) print("# 矩形カーネル") print(cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))) print("# 楕円形カーネル") print(cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))) print("# 十字型カーネル") print(cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))) plt.subplot(331),plt.imshow(img),plt.title('Original') plt.xticks([]),plt.yticks([]) plt.subplot(332),plt.imshow(erosion),plt.title('erosion ') plt.xticks([]),plt.yticks([]) plt.subplot(333),plt.imshow(dilation),plt.title('dilation ') plt.xticks([]),plt.yticks([]) plt.subplot(334),plt.imshow(closing),plt.title('closing ') plt.xticks([]),plt.yticks([]) plt.subplot(335),plt.imshow(gradient),plt.title('gradient ') plt.xticks([]),plt.yticks([]) plt.subplot(336),plt.imshow(tophat),plt.title('tophat ') plt.xticks([]),plt.yticks([]) plt.subplot(337),plt.imshow(blackhat),plt.title('blackhat ') plt.xticks([]),plt.yticks([]) plt.show()
コメント
コメントを投稿