下準備
・import cv2
できるようにする
・特徴量ファイルを読み込めるようにする
こちら参照
Mac OS X で OpenCV 3 + Python 2/3 の開発環境を整備する方法
分類器の作成と顔の位置検出
import os
import cv2
# 特徴量ファイルをもとに分類器を作成
classifier = cv2.CascadeClassifier('lbpcascade_animeface.xml')
# 顔の検出
image = cv2.imread('newGame.jpg')
# グレースケールで処理を高速化
gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
faces = classifier.detectMultiScale(gray_image)
print(faces)
で6人分の顔の位置と大きさが検出できたのを確認
[[485 148 134 134]
[456 313 193 193]
[380 58 98 98]
[649 227 127 127]
[373 245 108 108]
[637 54 104 104]]
一人ずつ顔を切り抜く
# ディレクトリを作成
output_dir = 'faces'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for i, (x,y,w,h) in enumerate(faces):
# 一人ずつ顔を切り抜く
face_image = image[y:y+h, x:x+w]
output_path = os.path.join(output_dir,'{0}.jpg'.format(i))
cv2.imwrite(output_path,face_image)
cv2.imwrite('face.jpg',image)
顔を四角で囲う
for x,y,w,h in faces:
# 四角を描く
cv2.rectangle(image, (x,y), (x+w,y+h), color=(0,0,255), thickness=3)
cv2.imwrite('faces.jpg',image)
特徴量ファイル一覧
haarcascade_eye.xml
haarcascade_eye_tree_eyeglasses.xml
haarcascade_frontalcatface.xml
haarcascade_frontalcatface_extended.xml
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_default.xml
haarcascade_fullbody.xml
haarcascade_lefteye_2splits.xml
haarcascade_licence_plate_rus_16stages.xml
haarcascade_lowerbody.xml
haarcascade_profileface.xml
haarcascade_righteye_2splits.xml
haarcascade_russian_plate_number.xml
haarcascade_smile.xml
haarcascade_upperbody.xml
今回使用したlbpcascade_animeface.xmlはこちら
https://github.com/nagadomi/lbpcascade_animeface