LoginSignup
19
16

More than 3 years have passed since last update.

Pythonで顔認識を爆速で自分のPCで実験してみる

Last updated at Posted at 2018-12-15

Anacondaをインストール

https://www.anaconda.com/download/#macos
今回は、Python 3.7 version を使用しています。

ダウンロードして開くと、下の画面が出てくると思うので、Jupyterを選択しましょう。そうすると、ターミナルが起動してブラウザでPythonのコードが書けるようになると思います。
スクリーンショット 2018-12-15 15.51.54.png
スクリーンショット 2018-12-15 16.04.24.png

pythonのファイルを新規作成

画面右上のNewというボタンから、Pythonのファイルを作りましょう。
スクリーンショット 2018-12-15 16.07.15.png
すると、下の画面が開くと思います。この状態で、新規にファイルが作られています。
スクリーンショット 2018-12-15 16.08.00.png
名前を、faceRecognitionとしておきましょう。
スクリーンショット 2018-12-15 16.13.28.png

いよいよ実装!顔認識!

まずは、opencvをインストールしましょう。
IN [ ]:の中にpythonのコードを書いて、実行しましょう。(Shiftを押しながらEnter)

faceRecognition.ipynb
!pip install opencv-python

周りの枠が緑ではなく、青の状態でキーボードのbを押すと、新しくコードが打てる四角が出てきます。
スクリーンショット 2018-12-16 4.01.26.png
そしたら、wgetコマンドでgitに上がっているxmlファイルを取ってきましょう。(有難や)

faceRecognition.ipynb
!wget https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_alt.xml

!wgetコマンドが使えない!って人は、
ターミナルでコマンドをインストールしましょう。

$ brew install wget

brewコマンドが使えない!って人は、(macの人は)
コマンドライン・デベロッパーツールをインストール
ターミナルでコマンドをインストールしましょう。

$ xcode-select --install
xcode-select: note: install requested for command line developer tools
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

!wgetでダウンロードできたら、xmlファイルが同じディレクトリの階層にあると思います。
スクリーンショット 2018-12-15 16.14.28.png
新しく、また緑から青の四角の状態に戻してキーボードのbを押して新しい四角を出して、変数に入れて確認してみましょう。

faceRecognition.ipynb
cascade_path = "haarcascade_frontalface_alt.xml"

無事に動いていたら、エラーなどが出てこないので動いていると思います。
では、最後に新しくコードを書ける四角をまた出して、コードを書いていきます。

faceRecognition.ipynb
import cv2
cap = cv2.VideoCapture(0)

while True:
    ret, im = cap.read()

    # ここからのコードを変えながら、微調整するとオリジナルになると思います。
    img_gray = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)
    cascade = cv2.CascadeClassifier(cascade_path)
    faces = cascade.detectMultiScale(img_gray, scaleFactor=1.1, minNeighbors=2, minSize=(80, 80)) # minNeighborsは人数
    print(faces)

    if len(faces) > 0:
        for (x, y, w, h) in faces:
            cv2.rectangle(im, (x,y), (x+w, y+h), (255, 0, 0), 2)

    import matplotlib.pyplot as plt
    % matplotlib inline

    img = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)

    plt.imshow(img)

    blur = cv2.GaussianBlur(im, (0, 0), 1)
    cv2.imshow('camera capture', blur)
    key = cv2.waitKey(10)
    # カメラはESCキーで終了できるように。
    if key == 27:
        break

# 一旦画像削除の命令
cap.release()
# カメラが立ち上がっているので、全てのウィンドウを閉じる
cv2.destroyAllWindows()

うまく動けば、以下のように顔認識できているはずです。
スクリーンショット 2018-12-16 3.36.29.png

19
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
16