Vor der Installation von dlib sind CMAKE, Boost, Boost Python, G ++ und mehr erforderlich
Einführung von OpenCV und dlib unter Ubuntu
Fügen Sie OpenCV / scikit-image in die Eingabe / Ausgabe der Bilddatei ein Diesmal benutze ich OpenCV
Mit dlib können Sie eine Gesichtsbewertung erhalten Es fühlt sich so an, als würde es erkennen, selbst wenn es ein wenig geneigt ist. Selbst wenn Sie es beim Drehen erkennen, kann der Drehwinkel jeweils etwa 45 Grad betragen. Ich habe versucht, mit einer etwas niedrigen Punktzahl (CUT_OFF-Wert) zu screenen, und dachte, dass es möglich sein könnte, den Winkel so anzupassen, dass die Punktzahl hoch ist, während der verengte Bereich gedreht wird, aber es dauert zu lange Der Typ, der im Erkennungsergebnis angezeigt wird, scheint dem Detektortyp zu entsprechen (ob das Gesicht vorne oder seitlich ist?) Wenn Sie einen Kommentar abgeben, werden 68 Feature-Punkte aus dem erkannten Gesicht extrahiert Wenn Sie wissen, welche Punkte den Augen, der Nase und der Kontur entsprechen, können Sie sie etwas verbessern.
detect_face.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import os, sys, imghdr, shutil, dlib, cv2
CWD = os.getcwd()
DIR_ORIGIN = CWD + '/images/'
DIR_DESTINATION = CWD + '/faces/'
CUT_OFF = -0.1
detector = dlib.get_frontal_face_detector()
# predictor = dlib.shape_predictor('./shape_predictor_68_face_landmarks.dat')
def getFaces(path_full):
results = []
image = cv2.imread(path_full)
height, width = image.shape[:2]
rects, scores, types = detector.run(image, 1, CUT_OFF)
for i, rect in enumerate(rects):
top, bottom, left, right = rect.top(), rect.bottom(), rect.left(), rect.right()
if min(top, height - bottom - 1, left, width - right - 1) < 0:
continue
results.append({
'image' : image[top : bottom, left : right],
'score' : scores[i],
'orientation' : types[i]
})
# shape = predictor(image, rect)
# for i in range(shape.num_parts):
# print(shape.part(i))
return results
count = 1
for path, subdirs, files in os.walk(DIR_ORIGIN):
for name in files:
path_full = os.path.join(path, name)
if imghdr.what(path_full) in ['jpeg']:
faces = getFaces(path_full)
for face in faces:
file_name = '{destination_dir}/{score}_{type}_{count}_dlib.jpg'.format(
destination_dir = DIR_DESTINATION,
score = face['score'],
type = int(face['orientation']),
count = count
)
cv2.imwrite(file_name, face['image'], [cv2.IMWRITE_JPEG_QUALITY, 100])
count += 1
print(path_full)
Gesichtserkennungsprogramm, das OpenCV und dlib verbindet
Bibliothek für maschinelles Lernen dlib
OpenFace 0.2.0: Higher accuracy and halved execution time
Zusammenfassung der Ergebnisse der Gesichtserkennung mit OpenCV, Dlib und OpenFace
Recommended Posts