Help us understand the problem. What is going on with this article?

カメラを使って顔認識 with opencv3 + python2.7

More than 3 years have passed since last update.

【環境】

・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...」を選択して、新しいファイルを開きます。
②以下のコードをコピペします。

camera_face_rec.py
# -*- 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」キーを押すとプログラムが終了します。

   pic.twitter.com/gEZY3Jd4Co

【感想】

・認識されない顔もあるため、もっと正確に認識できればいいなと思いました。
・機械学習と組み合わせれば何か面白いものが出来上がると思います。

【参考サイト】

・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

 

Nobu12
ユニークで奇抜な面白いアイディアのプログラミングをしたい!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした