Haar-likeによる人物検出【OpenCV + Python】
次はHaar-likeによる人物検出を行いたいと思います
以下のサイトを参考にさせて頂きました
http://python-gazo.blog.jp/opencv/%E4%BA%BA%E6%A4%9C%E5%87%BA
http://python-gazo.blog.jp/opencv/%E4%BA%BA%E6%A4%9C%E5%87%BA
プログラム
# -*- coding: utf-8 -*- import cv2 import sys dataset_dir = u"/path/to/dataset/" def haarlike(): argv = sys.argv argc = len(argv) if (argc != 2): #引数がちゃんとあるかチェック #正しくなければメッセージを出力して終了 print 'Usage: python %s arg1' %argv[0] quit() # 画像の読み込み img_name = dataset_dir + argv[1] im = cv2.imread(img_name) # 探索用の機械学習ファイルを取得 cascade = cv2.CascadeClassifier("haarcascade_fullbody.xml") # 探索(画像,縮小スケール,最低矩形数) eye = cascade.detectMultiScale(im, 1.1, 3) # 検出した部分を長方形で囲う for (x, y, w, h) in eye: cv2.rectangle(im, (x, y),(x+w, y+h),(0, 50, 255), 3) # 画像表示 cv2.imshow("Show Image",im) # キー入力待機 cv2.waitKey(0) # 画像保存 out_file_name = "after" + argv[1] cv2.imwrite(out_file_name,im) print u"saved" cv2.destroyAllWindows() #プログラムの終了 quit() if __name__ == '__main__': haarlike()
プログラムの説明
■実行方法
$ python [上記のプログラム名] [人物検出したい画像名]
■関数の説明
・CascadeClassifier:ファイルから分類器を読み込む
・detectMultiScale:入力画像中から異なるサイズのオブジェクトを検出する
検出されたオブジェクトは、矩形のリストとして返される