2012年7月14日土曜日

[python]openCVのサンプル

このへんからの流れです。
http://zonotex.blogspot.jp/2012/07/vcopencv.html

とりあえず、環境っぽいものはできたから動作させてみようというわけで。
まあopenCVやってる人は私みたいな薄っぺらいのじゃなくて
PG詳しい人とか研究者だからこんなこと書くものでもないだろうけど
同じくらいの人のためになればということで。

参考
http://opencv.jp/opencv-2.2/py/objdetect_cascade_classification.html
http://d.hatena.ne.jp/hogelog/20110512/p1
http://imagesensing.seesaa.net/article/214206116.html

CC0ってことなのでコードままぱくりました。
haarcascade_eye.xmlは
F:\data\opencv\data\haarcascades\haarcascade_eye.xml
みたいなところにあります。
SVNから落としてきたソースファイルの中ね。
face.jpgは適当な画像ファイル。人の写ってるやつがいいかな。


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from cv2 import cv

__author__ = 'isann'

def main():
    # *参考
    #  * リファレンス
    # 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
    
    storage = cv.CreateMemStorage()
    
    # 「目検出」のための教師データの読み込み
    hc = cv.Load(r"C:\Users\isann\IdeaProjects\proto_opencv\data\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)

if __name__ == '__main__':
    main()

0 件のコメント:

コメントを投稿