とりあえず画像を読み込んでみるなど
画像ファイルの用意
まずは画像ファイルを用意しよう。こういう時は、Tiger.psかlenna.tiffを使うもんだと聞いたことがある。
というわけで、http://sipi.usc.edu/database/database.php?volume=misc からLennaの画像をダウンロードしておく。ちなみに「Scans of magazine pictures. Copyright belongs to original publisher or photographer.」となってるので、ホントは使用許諾は個別に取る必要があるみたいだぞ。
画像を読み込んで表示する
http://docs.opencv.org/3.1.0/d6/d00/tutorial_py_root.html を見よう見まねでやってみよう。
import numpy as np import cv2 import os.path lenna = "4.2.04.tiff" if os.path.exists(lenna): img = cv2.imread("4.2.04.tiff") cv2.imshow("Lenna", img) cv2.waitKey(0) cv2.destroyAllWindows()
画像表示するだけなんだけれど、numpy要るんスかね。
画像の2値化してみる
http://docs.opencv.org/trunk/d7/d4d/tutorial_py_thresholding.html を見ながら、Lennaの2値化をやってみる。コードの意味は、イマイチ分からない。
import cv2 import numpy as np import os.path from matplotlib import pyplot as plt lenna = "4.2.04.tiff" if os.path.exists(lenna): img = cv2.imread(lenna,0) img = cv2.medianBlur(img,5) ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2) th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2) titles = ['Original Image', 'Global Thresholding (v = 127)', 'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding'] images = [img, th1, th2, th3] for i in range(0,4): plt.subplot(2,2,i+1),plt.imshow(images[i],'gray') plt.title(titles[i]) plt.xticks([]),plt.yticks([]) plt.show()
さらに、大津の2値化。
import cv2 import numpy as np import os.path from matplotlib import pyplot as plt lenna = "4.2.04.tiff" if os.path.exists(lenna): img = cv2.imread(lenna,0) img = cv2.medianBlur(img,5) ret,th1 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) blur = cv2.GaussianBlur(img,(5,5),0) ret2,th2 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) titles = ['Original Image', 'Otsu Method', 'OTSU Method(w Gaussian Blur)'] images = [img, th1, th2] for i in range(0,3): plt.subplot(1,3,i+1),plt.imshow(images[i],'gray') plt.title(titles[i]) plt.xticks([]),plt.yticks([]) plt.show()
これらのコードの意味を理解するのが、次の課題だ。