顔を認識する(blur out a face)

質問者
写真の顔に印をつけてみたいのですが

回答者
PythonとRetinaFaceを使って印をつけてみましょう!
RetinaFaceは、顔認識ライブラリで有名なInsightFaceとインペリアル・カレッジ・ロンドンが共同で開発し、2019年5月にリリースされた高精度の顔検出モデルです。
このモデルは、顔の境界ボックスと目や口のキーポイントを計算します。また、高解像度の画像でもサイズ変更なしで問題なく動作し、階層的な検出プロセスを実行するため、画像内の小さな顔をしっかりと検出できるようです。
元の写真

Google ドライブをローカルにマウントする
from google.colab import drive
drive.mount('/content/drive')
ライブラリインストール・インポート
# 必要なライブラリをインストールする
!pip install tensorflow opencv-python retina-face
# ライブラリのインポート
import cv2
import numpy as np
from google.colab.patches import cv2_imshow
from retinaface import RetinaFace
import matplotlib.pyplot as plt
顔を認識する
img_path = "/content/drive/~~~ ~~~~~/faces.jpg"
img = cv2.imread(img_path)
obj = RetinaFace.detect_faces(img_path)
len(obj.keys())
4 (名)
顔を四角で囲う
for key in obj.keys():
identity = obj[key]
#print(identity)
facial_area = identity["facial_area"]
cv2.rectangle(img,(facial_area[2],facial_area[3]),(facial_area[0],facial_area[1]),(255,255,0),5)
結果を表示
plt.figure(figsize = (5,5))
plt.imshow(img[:,:,::-1])
plt.show()

みほん ( Sample )




コメント