【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では、アプリケーションがカメラにアクセスするための許可が必要です。システム設定で以下の手順を行ってください。
システム設定を開く
セキュリティとプライバシーを選択
プライバシータブでカメラを選択
Pythonまたはターミナルにカメラアクセスを許可
カメラのアクセス権限をリセットするには、以下のコマンドを実行します。
tccutil reset Camera
再度Pythonスクリプトを実行し、カメラアクセスの許可を求めるプロンプトが表示されることを確認します。
おわりに
以上で、OpenCVを使った顔検出アプリの作成手順の説明は終了です。この手順を参考にして、顔検出アプリを作成してみてください。何か質問があれば、コメントでお知らせください。
この記事が参考になったら、ぜひフォローして、いいねをお願いします!
この記事が気に入ったらサポートをしてみませんか?