#【環境】
・windows8.1
・surface pro2
#【準備】
・Anacondaのインストール(python2.7)
https://www.continuum.io/downloads
上記のサイトから自分の環境に合ったAnacondaをインストールします。
・OpenCVのインストール
http://opencv.blog.jp/python/ver3_install
上記サイトを参考にOpenCVをインストールします。
なお、「cv2.pyd」ファイルは
「C:\Users\nobu\Anaconda2\Lib\site-packages\Anaconda2\Lib\site-packages」
に、コピーしてください(このパスは私の環境におけるものなので、皆さんの環境に合わせてください)。
※以降、私の環境での説明になりますので、自分の環境に対応させてください。
・カスケードファイルのコピー
OpenCVのインストールフォルダに「opencv\build\etc\haarcascades」があります。
そのフォルダにある「haarcascade_frontalface_alt.xml」というファイルを
「C:\Users\nobu\Documents\Python Scripts」にコピーしてください。
ちなみに、おおざっぱに言うとカスケードファイルというのは物体を検出するための設定ファイルです。
参考URL:http://www.pro-s.co.jp/engineerblog/opencv/post_6202.html
#【手順】
①Anacondaのインストール時に一緒にインストールされたSpyder(pythonのIDE)を開きます。
②「File」→「New file...」を選択して、新しいファイルを開きます。
②以下のコードをコピペします。
# -*- coding: UTF-8 -*-
import cv2
import os
cascade_path = "haarcascade_frontalface_alt.xml"
#カスケード分類器の特徴量を取得する
cascade = cv2.CascadeClassifier(cascade_path)
# カメラからキャプチャー
cap = cv2.VideoCapture(0)
color = (255, 255, 255) #白
while(True):
# 動画ストリームからフレームを取得
ret, frame = cap.read()
#物体認識(顔認識)の実行
facerect = cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
for rect in facerect:
#検出した顔を囲む矩形の作成
cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), color, thickness=2)
# 表示
cv2.imshow("Show FLAME Image", frame)
# qを押したら終了。
k = cv2.waitKey(1)
if k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
③spyder右側にある「IPython console」タブを開いた状態で「F5」キーを押します。
そうすると、デフォルトで設定されているカメラが起動して人物の顔を映すと
次のリンク先の動画のようになります(動画の埋め込みの仕方が分からなかったので、リンク張りました)。
「q」キーを押すとプログラムが終了します。
#【感想】
・認識されない顔もあるため、もっと正確に認識できればいいなと思いました。
・機械学習と組み合わせれば何か面白いものが出来上がると思います。
#【参考サイト】
・Python3 OpenCV3で(MacBookAirのカメラで)フレーム差分
http://blog.umentu.work/%E3%80%90%E5%8B%95%E7%94%BB%E3%81%82%E3%82%8A%E3%80%91python3-opencv3%E3%81%A7macbookair%E3%81%AE%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%A7%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E5%B7%AE%E5%88%86/
・Getting Started with Videos
http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html#display-video