見出し画像

【Python】OpenCVで顔認識プログラムを作成してみた話

はじめに

この記事では、macOSでOpenCVを使用してWebカメラから顔を検出するアプリの作成手順を説明します。Python仮想環境の設定から、必要なライブラリのインストール、顔検出スクリプトの作成までをカバーします。

前提条件

  • macOSがインストールされていること

  • Homebrewがインストールされていること

  • Pythonがインストールされていること

Homebrewの確認とPythonのインストール

Homebrewの確認

まず、Homebrewがインストールされていることを確認します。ターミナルで以下のコマンドを実行してください。

brew --version

Homebrewがインストールされていない場合は、以下のコマンドを実行してインストールします。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Pythonのインストール

Homebrewを使用してPythonをインストールします。

brew install python

Pythonとpipのバージョン確認

正しくインストールされたか確認します。

python3 --version
pip3 --version

プロジェクトディレクトリの作成と仮想環境の設定

プロジェクトディレクトリの作成

デスクトップにプロジェクトディレクトリを作成します。

cd ~/Desktop
mkdir face_detection_project
cd face_detection_project

仮想環境の作成

Python仮想環境を作成します。

python3 -m venv venv

仮想環境のアクティベート

仮想環境をアクティベートします。

source venv/bin/activate

ターミナルのプロンプトが変わり、仮想環境がアクティベートされていることが確認できます。

必要なライブラリのインストール

仮想環境がアクティベートされた状態で、OpenCVとnumpyをインストールします。

pip install opencv-python numpy

顔検出スクリプトの作成

プロジェクトディレクトリ内に`face_detection.py`ファイルを作成し、以下のコードを貼り付けます。

import cv2

def detect_faces():
    # カスケード分類器のファイルパス
    cascade_path = cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'
    face_cascade = cv2.CascadeClassifier(cascade_path)

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

    while True:
        # フレームをキャプチャ
        ret, frame = cap.read()
        if not ret:
            print("Failed to grab frame")
            break

        # グレースケールに変換
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        # 顔を検出
        faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

        # 検出した顔に四角を描画
        for (x, y, w, h) in faces:
            cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)

        # フレームを表示
        cv2.imshow('Face Detection', frame)

        # 'q'キーで終了
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # リリースとウィンドウの破棄
    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    detect_faces()

スクリプトの実行

仮想環境がアクティベートされた状態で、以下のコマンドを実行してスクリプトを実行します。

python face_detection.py

これでWebカメラが起動し、顔を検出して四角で囲むウィンドウが表示されるはずです。`q`キーを押すとプログラムが終了します。

トラブルシューティング

カメラアクセスの許可

macOSでは、アプリケーションがカメラにアクセスするための許可が必要です。システム設定で以下の手順を行ってください。

  1. システム設定を開く

  2. セキュリティとプライバシーを選択

  3. プライバシータブでカメラを選択

  4. Pythonまたはターミナルにカメラアクセスを許可

カメラのアクセス権限をリセットするには、以下のコマンドを実行します。

tccutil reset Camera

再度Pythonスクリプトを実行し、カメラアクセスの許可を求めるプロンプトが表示されることを確認します。

おわりに

以上で、OpenCVを使った顔検出アプリの作成手順の説明は終了です。この手順を参考にして、顔検出アプリを作成してみてください。何か質問があれば、コメントでお知らせください。

この記事が参考になったら、ぜひフォローして、いいねをお願いします!

この記事が気に入ったらサポートをしてみませんか?