
PC内蔵カメラから自分の顔の物体検出をやってみる
こんにちは。
AI coordinatorの清水秀樹です。
ほとんど筆者の備忘録的な内容になります。
色々な映像や画像からの物体検出をチャレンジしてきましたが、実際のカメラ映像からの物体検出をしっかりとまとめておこうと思ったので、この記事を書くことにしました。
とは言っても、当記事は学習モデルをガンガン作成して物体検出をやる内容ではなく、OpenCVのカスケードファイルを使って物体検出を簡単に試してみる内容となっています。
学習モデルをガンガン作成して物体検出を試してみたい方は以下のサイトを参考にしてみてください
お手元のPC内蔵カメラで手軽に物体検出を試してみたい方は、当記事が参考になると思います。
参考にさせて頂いたサイト
以下のサイトを参考にさせて頂きました。
カメラを使って顔認識 with opencv3 + python2.7
python3系でも動きます。
テスト環境
macOS Sierra
Anaconda3-4.2.0-MacOSX-x86_64
python 3.5.2
opencv3 3.1.0
ソースコード
今回はimacの内蔵カメラ実施しました。
顔と目の物体検出ができるようにソースコードを作成しています。
# -*- coding: UTF-8 -*-
import cv2
import os
#顔の認識
f_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_alt.xml')
#目の認識
e_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_eye.xml')
# カメラの起動
cap = cv2.VideoCapture(0)
while(True):
# 動画ストリームからフレームを取得
ret, frame = cap.read()
#物体認識(顔認識)の実行
facerect = f_cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
#物体認識(目認識)の実行
eyerect = e_cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
#検出した顔を囲む矩形の作成
for rect in facerect:
cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), (255, 255, 255), thickness=2)
text = 'face'
font = cv2.FONT_HERSHEY_PLAIN
cv2.putText(frame,text,(rect[0],rect[1]-10),font, 2, (255, 255, 255), 2, cv2.LINE_AA)
#検出した目を囲む矩形の作成
for rect in eyerect:
cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), (0, 255, 0), thickness=2)
text = 'eye'
font = cv2.FONT_HERSHEY_PLAIN
cv2.putText(frame,text,(rect[0],rect[1]-10),font, 2, (0, 255, 0), 2, cv2.LINE_AA)
# 表示
cv2.imshow("Show FLAME Image", frame)
# qを押したら終了。
k = cv2.waitKey(1)
if k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
cv2.VideoCapture()で引数に’0’を指定するば内蔵カメラが起動します。
動画ファイルのパスを指定すれば動画ファイルが起動します。
OpenCVは非常に簡単に映像が取り扱えるようになるので、色々と使い道がありそうです。
それではまた。
LEAVE A REPLY