Python OpenCV3で画素の膨張処理(dilation)と収縮処理(erosion) (ちょっと解説も) | from umentu import stupid
ほぼ、上記urlのまんま.
細線消去に関しては、 medianBlur() による中央値処理より、dilate() の方が良い気がします。
#!/usr/local/bin/python # -*- coding: utf-8 -*- import cv2 import numpy as np import sys def main(): org_file = sys.argv[1] # 強制的にグレー画像として読む # http://opencv.jp/opencv-2.1/cpp/reading_and_writing_images_and_video.html img = cv2.imread(org_file, 0) cv2.imwrite('org.png', img) ret, img_new = cv2.threshold(img, 200, # 閾値 256, # 画素値の最大値 cv2.THRESH_BINARY) # 2値化type # 近傍の定義 neiborhood = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]], np.uint8) # 収縮 img_new = cv2.dilate(img_new, neiborhood, iterations=2) # 膨張 # img_new = cv2.erode(img_new, # neiborhood, # iterations=2) cv2.imwrite('new.png', img_new) if __name__ == '__main__': main()
↑こう書くと↓こう変換されます