Raspberry Piにカメラモジュールを接続してOpenCVで顔認識する

スポンサーリンク

ライブラリを読み込む

ライブラリを読み込みます。

import cv2 #opencvライブラリ
from picamera2 import Picamera2 #カメラライブラリ

カスケード分類器ファイルを読み込む

カスケード分類器ファイルを読み込みます。

strPass="/usr/local/lib/python3.9/dist-packages/cv2/data/"
face_detector=cv2.CascadeClassifier(strPass+"haarcascade_frontalface_alt.xml")
face2_detector=cv2.CascadeClassifier(strPass+"haarcascade_profileface.xml")
face3_detector=cv2.CascadeClassifier(strPass+"haarcascade_eye.xml")

映像から顔を検出する

映像から顔を検出します。

cv2.startWindowThread() #windowを作成

#カメラを起動
picam2=Picamera2()
picam2.configure(picam2.create_preview_configuration(main={"format": 'XRGB8888', "size": (640, 480)}))
picam2.start()

while True:
 im=picam2.capture_array() #カメラ画像を取得

 grey=cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) #グレースケール化

 #分類器1
 faces=face_detector.detectMultiScale(grey, 1.1, 5)
 for(x, y, w, h) in faces:
  cv2.rectangle(im, (x, y), (x+w, y+h), (255, 0, 0))

 #分類器2
 faces=face2_detector.detectMultiScale(grey, 1.1, 5)
 for(x, y, w, h) in faces:
  cv2.rectangle(im, (x, y), (x+w, y+h), (0, 255, 0))

 #分類器3
 faces=face3_detector.detectMultiScale(grey, 1.1, 5)
 for(x, y, w, h) in faces:
  cv2.rectangle(im, (x, y), (x+w, y+h), (0, 0, 255))

 cv2.imshow("Camera", im) #表示

 #escキーを入力されたらクローズ
 key=cv2.waitKey(1)
 if key == 27:
  break

picam2.stop()
cv2.destroyAllWindows()

コメント

タイトルとURLをコピーしました