Zählen Sie die Anzahl der Gesichter mit Python - OpenCV
Voraussetzungen: Gesichtserkennung mit dlib und openCV
In diesem Artikel verwenden wir die Bildverarbeitung, um die Anzahl der Gesichter zu erkennen und zu zählen. Wir sollen nicht alle Gesichtszüge bekommen. Stattdessen besteht das Ziel darin, den Begrenzungsrahmen durch einige Methoden zu erhalten, dh durch Koordinaten der Fläche im Bild, abhängig von verschiedenen Bereichen, die durch die Anzahl der Koordinaten abgedeckt werden, Anzahl der zu berechnenden Flächen.
Erforderliche Bibliotheken:
- Die OpenCV- Bibliothek in Python ist eine Computer-Vision-Bibliothek, die hauptsächlich für die Bildverarbeitung, Videoverarbeitung und -analyse, Gesichtserkennung und -erkennung usw. verwendet wird.
- Die Dlib- Bibliothek in Python enthält den vorab trainierten Gesichtsmarkierungsdetektor, mit dem die (x, y) -Koordinaten erfasst werden, die den Gesichtsstrukturen im Gesicht zugeordnet sind.
- Numpy ist ein universelles Array-Verarbeitungspaket. Es bietet ein leistungsstarkes mehrdimensionales Array-Objekt und Tools für die Arbeit mit diesen Arrays.
Nachfolgend finden Sie den schrittweisen Ansatz zum Zählen der Anzahl der Gesichter:
Schritt 1: Importieren Sie die erforderlichen Bibliotheken.
import
cv2
import
numpy as np
import
dlib
Schritt 2: Öffnen Sie die Standardkamera zum Erfassen von Gesichtern und verwenden Sie die dlib- Bibliothek, um Koordinaten abzurufen .
cap
=
cv2.VideoCapture(
0
)
detector
=
dlib.get_frontal_face_detector()
Schritt 3: Zählen Sie die Anzahl der Gesichter.
- Erfassen Sie die Bilder kontinuierlich.
- Konvertieren Sie die Frames in Graustufen (nicht erforderlich).
- Nehmen Sie einen Iterator i und initialisieren Sie ihn auf Null.
- Erhöhen Sie den Iterator jedes Mal um 1, wenn Sie die Koordinaten für die Gesichtsstruktur im Rahmen erhalten.
- Zeichnen Sie das Feld um jedes erkannte Gesicht zusammen mit seiner Gesichtsanzahl.
while
True
:
ret, frame
=
cap.read()
frame
=
cv2.flip(frame,
1
)
gray
=
cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces
=
detector(gray)
i
=
0
for
face
in
faces:
x, y
=
face.left(), face.top()
x1, y1
=
face.right(), face.bottom()
cv2.rectangle(frame, (x, y), (x1, y1), (
0
,
255
,
0
),
2
)
i
=
i
+
1
cv2.putText(frame,
'face num'
+
str
(i), (x
-
10
, y
-
10
),
cv2.FONT_HERSHEY_SIMPLEX,
0.7
, (
0
,
0
,
255
),
2
)
(face, i)
cv2.imshow(
'frame'
, frame)
Schritt 4: Beenden Sie die Schleife.
if
cv2.waitKey(
1
) &
0xFF
=
=
ord
(
'q'
):
break
Schritt 5: Fenster löschen.
cap.release()
cv2.destroyAllWindows()
Nachfolgend finden Sie das vollständige Programm des oben genannten Ansatzes:
import
cv2
import
numpy as np
import
dlib
cap
=
cv2.VideoCapture(
0
)
detector
=
dlib.get_frontal_face_detector()
while
True
:
ret, frame
=
cap.read()
frame
=
cv2.flip(frame,
1
)
gray
=
cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces
=
detector(gray)
i
=
0
for
face
in
faces:
x, y
=
face.left(), face.top()
x1, y1
=
face.right(), face.bottom()
cv2.rectangle(frame, (x, y), (x1, y1), (
0
,
255
,
0
),
2
)
i
=
i
+
1
cv2.putText(frame,
'face num'
+
str
(i), (x
-
10
, y
-
10
),
cv2.FONT_HERSHEY_SIMPLEX,
0.7
, (
0
,
0
,
255
),
2
)
(face, i)
cv2.imshow(
'frame'
, frame)
if
cv2.waitKey(
1
) &
0xFF
=
=
ord
(
'q'
):
break
cap.release()
cv2.destroyAllWindows()
Ausgabe: