6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TensorFlowを使ってDir en greyの顔分類器を作ってみた - ④顔抽出編

Last updated at Posted at 2017-05-31

はじめに

  • OpenCVの特性をそこまで知らなくても実行できますが、OpenCVが正常に読み込めるかが鍵になってきます。

プログラム

face_detect.py
# -*- coding:utf-8 -*-

import cv2
import numpy as np
import os.path
from pathlib import Path

# 先ほど集めてきた画像データのあるディレクトリ
input_data_path = '{ディレクトリパス}'

# 切り抜いた画像の保存先ディレクトリ
save_path = '{ディレクトリパス}'
# 保存先ディレクトリを作成
Path(save_path).mkdir(parents=True, exist_ok=True)

# OpenCVのデフォルトの分類器のpath。(https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xmlのファイルを使う)
cascade_path = '/usr/local/Cellar/opencv3/3.2.0/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)

# 収集した画像の枚数(任意で変更)
image_count = 1100

# 顔検知に成功した数(デフォルトで0を指定)
face_detect_count = 0

# 集めた画像データから顔が検知されたら、切り取り、保存する。
for i in range(image_count):
  file_name = input_data_path + str(i) + ".jpg"
  if os.path.isfile(file_name):
    img = cv2.imread(file_name, cv2.IMREAD_COLOR)
    assert img is not None, Path(file_name).absolute()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    face = faceCascade.detectMultiScale(gray, 1.1, 3)

    if len(face) > 0:
      for rect in face:
        # 顔認識部分を赤線で囲み保存(今はこの部分は必要ない)
        # cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0,255), thickness=1)
        # cv2.imwrite('detected.jpg', img)
        x = rect[0]
        y = rect[1]
        w = rect[2]
        h = rect[3]

        cv2.imwrite(save_path + '{ファイル名}' + str(face_detect_count) + '.jpg', img[y:y+h, x:x+w])
        face_detect_count = face_detect_count + 1
    else:
      print('image' + str(i) + ':No Face')
  else:
      print('image' + str(i) + ':No File')

実行

python face_detect.py

補足と言い訳

  • haarcascade_frontalface_default.xmlはfindして探してください。
  • 画像が上手く読めないファイルがあります。けっこうあります。
  • 画像は読めても上手く顔を抽出できないファイルがあるので、手で消してください。

全ページリンク

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?