タイトルまでは良かったのですが
実際やってみて全然関係ないところを目だと認識したり
結果はイマイチでしたが、以下にそのコードを記します
コード
# -*- coding: UTF-8 -*-
import cv2
import os
from os.path import join as join
C_Path = 'C:/Users/nakano/Anaconda3/Library/etc/haarcascades'
#顔検知
f_cascade = cv2.CascadeClassifier(join(C_Path, 'haarcascade_frontalface_alt.xml'))
#目検知
e_cascade = cv2.CascadeClassifier(join(C_Path, 'haarcascade_eye.xml'))
# 上体検知
b_cascade = cv2.CascadeClassifier(join(C_Path, 'haarcascade_upperbody.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))
#物体検知(上体検知)実行
bodyrect = b_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)
import cv2
import os
from os.path import join as join
C_Path = 'C:/Users/nakano/Anaconda3/Library/etc/haarcascades'
#顔検知
f_cascade = cv2.CascadeClassifier(join(C_Path, 'haarcascade_frontalface_alt.xml'))
#目検知
e_cascade = cv2.CascadeClassifier(join(C_Path, 'haarcascade_eye.xml'))
# 上体検知
b_cascade = cv2.CascadeClassifier(join(C_Path, 'haarcascade_upperbody.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))
#物体検知(上体検知)実行
bodyrect = b_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)
#検出した上体を囲む矩形作成(赤)
for rect in bodyrect:
cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), (0, 0, 255q), thickness=2)
text = 'body'
font = cv2.FONT_HERSHEY_PLAIN
cv2.putText(frame,text,(rect[0],rect[1]-10),font, 2, (0, 0, 255), 2, cv2.LINE_AA)
# 表示
cv2.imshow("Show FLAME Image", frame)
# 『q』キーを押す
k = cv2.waitKey(1)
if k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
for rect in bodyrect:
cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), (0, 0, 255q), thickness=2)
text = 'body'
font = cv2.FONT_HERSHEY_PLAIN
cv2.putText(frame,text,(rect[0],rect[1]-10),font, 2, (0, 0, 255), 2, cv2.LINE_AA)
# 表示
cv2.imshow("Show FLAME Image", frame)
# 『q』キーを押す
k = cv2.waitKey(1)
if k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()