0
1

Python openCVで顔検出してみた

Last updated at Posted at 2021-09-04

作成の経緯

高校の授業でC#を使って顔認識プログラムを作成した経験があり、同じ機能をPythonで実現してみようと思いました。
C#のプログラムではHaarcascadesを使用したので、Pythonでも同じ手法を採用しました。

準備するもの

  1. Python環境(バージョン3.x)
  2. カスケード分類器のダウンロード
    • Haarcascade Frontal Face XMLファイルをダウンロードします(haarcascade_frontalface_default.xml)。
    • ダウンロードしたファイルをPythonスクリプトと同じディレクトリに配置します。
  3. OpenCVのインストール
    pip install opencv-python
    

コード

import cv2

# カメラのキャプチャを開始
capture = cv2.VideoCapture(0)

# カスケード分類器のパスを指定
cascade_path = "./haarcascade_frontalface_default.xml"
cascade = cv2.CascadeClassifier(cascade_path)

while True:
    # フレームを読み取る
    ret, frame = capture.read()
    # グレースケールに変換
    image_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 顔を検出
    facerect = cascade.detectMultiScale(image_gray)
    print('\n', facerect, end='')

    # 顔が検出された場合、四角形で囲む
    if len(facerect) > 0:
        for rect in facerect:
            xy1 = tuple(rect[0:2])
            xy2 = tuple(rect[0:2] + rect[2:4])
            color = (255, 0, 0)
            width = 2
            cv2.rectangle(frame, xy1, xy2, color, width)

    # フレームを表示
    cv2.imshow('face camera', frame)
    # 'q'キーが押されたら終了
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# キャプチャを解放し、ウィンドウを閉じる
capture.release()
cv2.destroyAllWindows()

終了方法: qキーを押してプログラムを停止します。

あとがき

このプログラムを作成したのはかなり前のことで、各部分のコードの引用元を特定することができませんでした。
引用元の方々にはこの場を借りてお詫び申し上げます。

0
1
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
0
1