Windowsでサクっと顔認識をする遊び。
2011/05/12時点。まあ違う時期でも似たようなもんでしょう。
OpenCV 2.2をインストール
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.2/からOpenCV-2.2.0-win32-vs2010.exeをダウンロード、インストール。
Python 2.7.1をインストール
Download Python | Python.orgからPython 2.7.1 Windows Installerをインストール。
numpy 1.5.1をインストール
http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/からnumpy-1.5.1-win32-superpack-python2.7.exeをインストール。
OpenCVのPythonライブラリをコピー
C:\OpenCV2.2\Python2.7\Lib\site-packages
の中身を
C:\Python27\Lib\site-packages
にコピー。
適当にスクリプト
OpenCV.jpを参考に適当に書きましょう。
#!/usr/bin/python # vim: fileencoding=utf-8: # *参考 # * リファレンス # http://opencv.jp/opencv-2.2/py/objdetect_cascade_classification.html#haar-feature-based-cascade-classifier-for-object-detection # * 解説ページ(C言語) # http://www.aianet.ne.jp/~asada/prog_doc/opencv/opencv_obj_det_img.htm import cv storage = cv.CreateMemStorage() # 「目検出」のための教師データの読み込み hc = cv.Load("C:/OpenCV2.2/data/haarcascades/haarcascade_eye.xml") # 画像の読み込み img = cv.LoadImageM("face.jpg") # 顔認識(速度のため適当にパラメータ) #faces = cv.HaarDetectObjects(img, hc, storage) faces = cv.HaarDetectObjects(img, hc, storage, 1.1, 100, 0, (50, 50)) # (R, G, B) color = (255, 255, 255) # 検出したパーツそれぞれの領域を # 四角で囲む for (x, y, w, h), n in faces: p1 = (x, y) p2 = (x + w, y + h) cv.Rectangle(img, p1, p2, color) # 四角を描いた画像を保存 cv.SaveImage("face_detected.jpg", img)