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 件のコメント:
コメントを投稿