Ich habe die Gesichtserkennung in Echtzeit mit einer Webcam auf Jetson Nano ausprobiert.
Lassen Sie uns zunächst überprüfen, wie Sie das Bild mit der Webkamera erhalten. Es war wirklich einfach.
camTest.py
import cv2
#Kamera starten
capture = cv2.VideoCapture(0)
while(True):
#Holen Sie sich 1 Bild
ret, frame = capture.read()
#Bild im Fenster anzeigen
cv2.imshow("frame", frame)
#Stoppen Sie, wenn q gedrückt wird
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#Veröffentlichung
capture.release()
cv2.destroyAllWindows()
Es stoppt, wenn ich "q" drücke, aber es funktioniert nicht richtig, es sei denn, ich drücke es mit dem Fokus auf das Fenster anstelle des Terminals.
Wenn Sie OpenCV installieren, ist die Kaskadenklassifizierungsdatei enthalten. Verwenden Sie sie daher. (https://github.com/opencv/opencv/tree/master/data/haarcascades)
Das Verfahren zur Gesichtserkennung ist wie folgt
find_face.py
# -*- coding: utf-8 -*-
import time
import cv2
#Rahmengröße (größer macht die Verarbeitung schwerer)
FRAME_W = 320
FRAME_H = 240
#Kaskadenklassifikator für die Gesichtserkennung (wahrscheinlich eine Datei, die Funktionen zusammenfasst)
#Ich habe eine Fehlermeldung erhalten, als ich versucht habe, etwas zu lesen, das sich in einem anderen Ordner befindet, und habe es daher in denselben Ordner kopiert
cascadeFilePath = './haarcascade_frontalface_default.xml'
cascade = cv2.CascadeClassifier(cascadeFilePath)
#Kameraeinstellungen
cam = cv2.VideoCapture(0)
time.sleep(1) #Warten auf den Start (vorerst)
cam.set(cv2.CAP_PROP_FPS, 60) #Ich weiß nicht, ob es 60 war
cam.set(cv2.CAP_PROP_FRAME_WIDTH, FRAME_W)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT, FRAME_H)
while(True):
#Beenden Sie mit q
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#Bildaufnahme
ret, frame = cam.read()
#In Graustufen konvertieren
gray_image = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
#Gesichtserkennung
facerect = cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=2, minSize=(30, 30))
#Wurde das Gesicht erkannt?
if len(facerect) > 0:
#Randfarbe
line_color = (255, 102, 51)
#Textfarbe
font_color = (255, 102, 51)
#Schreiben Sie einen Rahmen und GESICHTSzeichen auf das erkannte Gesicht
for (x, y, width, height) in facerect:
cv2.rectangle(frame, (x, y), (x + width, y + height), line_color, 2)
cv2.putText(frame, 'FACE', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.7, font_color, 1, cv2.LINE_AA)
#Im Fenster anzeigen
cv2.imshow('frame', frame)
#Verarbeitung beenden
cam.release()
cv2.destroyAllWindows()
In Echtzeit erkannt!
Recommended Posts