トップページ -> データベース研究スタート -> OpenCV を使ってみる -> Python + OpenCV で顔検知
[サイトマップへ]  

Python + OpenCV で顔検知

OpenCV のカスケード分類器を使用

キーワード: OpenCV, cv2.CascadeClassifier, Python, 顔検知, カスケード分類器, Haar

参考Webページ: https://github.com/marcpare/stitch

参考Webページ: https://www.packtpub.com/mapt/book/application_development/9781785283932/4/ch04lvl1sec36/detecting-and-tracking-faces


前準備

前準備として,Anaconda のインストール, OpenCV のインストールが終わっていること. 手順を下に説明しています.

Anaconda のインストール

Python 3 の開発環境である Anacondaをおすすめ.Window でのインストール手順は次の通りです(Linuxでも同様の手順です).

  1. https://www.continuum.io/downloads#windowsを開く

  2. Download」をクリックする.

  3. ダウンロードが始まるので確認する.

  4. ダウンロードした .exe ファイルを実行して,Anacondaをインストール.

    Python処理系にはいくつかの種類がある. この Web ページでは Anaconda をおすすめしている. 以下,Windows に Anacondaをインストールしたものとして説明を続ける.

  5. コマンドプロンプトを管理者として実行

  6. まずは,最新の conda-build パッケージが欲しい.コマンドプロンプトで,次のコマンドを実行

    conda install -y conda-build
    

    ※ 「Proceed ([y]/n)?」と表示されたら, y + Enter で続行する.「反応が遅いなあ」と思ったら、Enter キーを押してみる.

  7. conda が更新されたので,コマンドプロンプトをいったん閉じる
  8. 再び,コマンドプロンプトを管理者として実行
  9. Anaconda プロンプトで,次のコマンドを実行

    conda update -y pip
    conda update -y setuptools
    conda update -y conda
    conda update -y conda-build
    

    ※ 「Proceed ([y]/n)?」と表示されたら, y + Enter で続行する.「反応が遅いなあ」と思ったら、Enter キーを押してみる.

OpenCV パッケージのインストール

  1. コマンドプロンプトを管理者として実行

  2. Anaconda プロンプトで,次のコマンドを実行

    ※ Anaconda や Miniconda を使っていないときは conda コマンドがないので pip コマンドを使ってください

    conda install -y opencv 
    

    ※ 「Proceed ([y]/n)?」のように表示されたときは y, Enter キー


プログラム例

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('C:\ProgramData\Anaconda3\pkgs\opencv-3.2.0-np112py36_204\Library\etc\haarcascades\haarcascade_frontalface_alt.xml')

bgr = cv2.imread('d:/lena.jpg', cv2.IMREAD_COLOR)
gray = cv2.cvtColor(bgr, cv2.COLOR_BGR2GRAY)

face_rects = face_cascade.detectMultiScale(gray, 1.1, 3)
if len(face_rects) > 0:
    for (x,y,w,h) in face_rects:
        cv2.rectangle(bgr, (x,y), (x+w,y+h), (0,255,255), 4)
else:
    print("no faces")
        
cv2.imshow("Face Detector", bgr)
print("press any key to exit")
c = cv2.waitKey()

cv2.destroyAllWindows()