プログラミング

【Python】顔を検出してみよう

投稿日:2020年11月22日 更新日:

これまで「OpenCV」で画像を読み込んだり、加工してきました。
今回は、「顔」の検出をやってみようと思います。

Pythonで顔を検出してみよう

コードを真似しよう

import cv2

face_cascade = cv2.CascadeClassifier("\haarcascade_frontalface_default.xml")
eye_cascade = cv2.CascadeClassifier("\haarcascade_eye.xml")

img = cv2.imread('people.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex,ey,ew,eh) in eyes:
        cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

このコードは、「顔」と「目」を検出します。

カスケード型検出器

「カスケード型検出器」というものを使って、「顔」と「目」を検出しています。
この検出器は、数千枚の画像を使って機械に「顔」というものを覚えこませる(学習させる)ことで作成されます。
学習には相当な時間がかかるので、今回はあらかじめ「OpenCV」に用意されているものを使用しています。

カスケード検出器の場所

cv2.CascadeClassifier("C:\Anaconda3\Library\etc\haarcascades\haarcascade_frontalface_default.xml")
cv2.CascadeClassifier("C:\Anaconda3\Library\etc\haarcascades\haarcascade_eye.xml")

ダウンロードしている場所によって変わりますが、自分はここにありました。
自分は「Anaconda」を使っています。
この「XMLファイル」を「CascadeClassifier」に入れてあげます。

Anacondaについてはこちら。

検出結果を表示してみよう

では、実行していきましょう。

左が元の画像で、右が検出結果です。
女性の顔のみ検出する結果となりました。

画像のサイズを変えてみた

サイズを大きくしたことによって、結果が変わりました。

まとめ

コードを真似しただけなので、関数の使い方はあまり理解していません。
うまく出力されたので、ここから少しづつ変化をつけてみて勉強したいと思います。
参考にしてみてください。
それではまた。

-プログラミング
-

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

【Python】加工した画像を保存してみよう

これまで「OpenCV」を使って、画像の読み込み、表示、リサイズなどを実践してきました。今回は、その加工した画像を保存してみたいと思います。 加工した画像を保存してみよう 今回も、前回のコードに追記す …

【Python】Flaskで掲示板を作ってみよう②

「Flaskで掲示板を作ってみよう①」から、間が空きましたが続きを書いていきたいと思います。今回は、実際に動作したコードを紹介します。 前回の記事はこちら 【Python】Flaskで掲示板を作ってみ …

【毎日投稿】4ヵ月達成

ブログを解説して、毎日投稿を続け「4ヵ月」を迎えました。今回は、今までの「Python」に関する記事をまとめて紹介したいと思います。 毎日投稿4ヵ月を迎えて おかげさまで4ヵ月目を迎えることができまし …

【Python】VBAをPythonで再現してみる②

前回に引き続き「VBA」の動きを「Python」で再現していきます。今回は、セルの値を「繰り返し」取得して行きたいと思います。 セルの値を繰り返し取得しよう 前回はセルの値を取得し、メッセージボックス …

【Python】クラスってなんだ?

Pythonを学ぶ上で「クラスってなんだ?」と思ったことはありますか?調べてみると、あるものに例えられていて分かりやすいものがありました。今回はそちらを参考に「クラス」とはなにかを紹介したいと思います …

YouTube