4
3

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 1 year has passed since last update.

たった4行で画像の中の人を数える方法

Last updated at Posted at 2022-11-12

どうも

face_recognitionについて調べてて意外と簡単だったので紹介します。

用意する物

  • face_recognition ←こいつが無いとお話にならない
  • 顔の入った写真 ←顔が隠れてないやつ

用意した画像

最近寒くなってきたのでこの画像にしました。
3061076_s.jpg

画像はここからダウンロードできます

注意
face_recognitionの学習モデルの関係で赤ちゃんの顔を認識できません。

注意事項の詳しい説明はこちら

コード全体

face_recognition.py
import face_recognition

image = face_recognition.load_image_file("ここに顔画像の入ったパス")#画像をロード
face_locations = face_recognition.face_locations(image)#顔の座標

print(f'画像の中に{len(face_locations)}人います')

すげえ信じられないくらい短い.....

ざっくり解説

画像の読み込み

image = face_recognition.load_image_file("ここに顔画像の入ったパス")#画像をロード

この行で画像を読み込んでimageに入れています。

画像の中の顔の座標取得

face_locations = face_recognition.face_locations(image)#顔の座標

imageに入った画像を読み込んで、画像の中にある顔の座標を取得してface_locationsに座標を入れています。

printで確認してみましょう。

print(face_locations)

実行結果

[(68, 235, 175, 127), (239, 349, 301, 287)]

こんな感じで写真の中の顔の座標を取得できました。

写真の顔が認識できないとValueErrorが出ます。

おいおい座標取得と人数を数えるの関係ないじゃ無いか!!!

っと言う前に下を見てください。

どうやって人数を数えるのか?

もうすでに勘のいい人はわかると思いますが、実行結果を見ると リスト[ ] の中の タプル型の( ) の中に

一人の顔の座標が入っています。つまりlen関数でリストの長さを調べれば、写真の中の人数を数えられます!

人数を出力

print(f'画像の中に{len(face_locations)}人います')

これでOK!

解説終了!!!!!

コードを動かしてみる

実行結果
画像の中に2人います

こんな感じで出力されます。

最初に説明したように赤ちゃんの顔は認識してないので2人と出力されます。

結構簡単だった

たった4行で画像から顔の座標撮って人数を数えられるface_recognitionすごいですよね

インストールが鬼畜すぎるだけで入れて使ってみると結構楽しいです。

これからもface_recognitionを使ったいろんな記事を書いていきたいと思います!!!

使用したURL

4
3
1

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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?