Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
34
Help us understand the problem. What is going on with this article?
@KMiura95

OpenCVで顔認識をしてみた

More than 1 year has passed since last update.

OpenCVは画像処理に使えるオープンソースのライブラリです。これはPythonでも使うことができるので機械学習でも使うことができます。今回はこのOpenCVを利用して顔認識をやってみようと思います。

今回の動作環境

  • Ubuntu 14.04
  • Python 3.6.1
  • OpenCV 3.1.0

今回やること

画像を読み込み、画像の中に顔を認識したら顔の座標と大きさを表示させます。その後、認識した顔を赤い四角形で表示させます。OpenCVには顔認識に使える特徴データのファイル(カスケードファイル)がいくつか用意されています。今回は正面を向いた時の顔を認識するデータファイルとして、haarcascade_frontalface_alt.xmlを使用します。なお、今回は以下の画像を使用して認識をします(ソースコード上ではbefore.jpgとしています)。
before.jpg

参照元:https://www.pakutaso.com/assets_c/2016/03/SAYA151005380I9A8403-thumb-autox1600-21549.jpg

ソースコード

front_face.py
#coding: utf-8
import cv2

cascade_file = "haarcascade_frontalface_alt.xml"
image_file = "before.jpg"

img = cv2.imread(image_file)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cascade = cv2.CascadeClassifier(cascade_file)
face_list = cascade.detectMultiScale(img_gray, minSize=(150, 150))

if len(face_list) == 0:
  print("Fail recognise")
  quit()

for (x, y, w, h) in face_list:
  print("顔の座標 =", x, y, w, h)
  color = (0, 0, 225)
  pen_w = 8
  cv2.rectangle(img, (x, y), (x+w, y+h), color, thickness = pen_w)

cv2.imwrite("after.jpg", img)

実行したところ、こんなエラーが出ました。

OpenCV Error: Assertion failed (!empty()) in detectMultiScale, file /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/objdetect/src/cascadedetect.cpp, line 1639
Traceback (most recent call last):
  File "face_front.py", line 11, in <module>
    face_list = cascade.detectMultiScale(img_gray, minSize=(150, 150))
cv2.error: /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/objdetect/src/cascadedetect.cpp:1639: error: (-215) !empty() in function detectMultiScale

  • 原因

調べてみたら、カスケードファイルのパスが間違っていることで起こっているエラーのようです。

  • 解決策

応急処置としてこのカスケードファイルをソースコードのあるディレクトリにコピーしてきて使うことが出来ました。

結果

実行結果として以下のような画像になりました。after.jpg

参考

Ubuntu16.04 LTSにOpenCV3.1をインストール から顔認識のテストまで

34
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
KMiura95
LINE API Expert / IBM Champion
iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
34
Help us understand the problem. What is going on with this article?