Inhaltsverzeichnis:
- Schritt 1: Gesichtserkennung in einem Echtzeitvideo
- Schritt 2: Trainieren Sie Ihre Beispielbilder
- Schritt 3: Gesichter erkennen
Video: Opencv Gesichtserkennung, Training und Erkennung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
OpenCV ist eine Open-Source-Computer-Vision-Bibliothek, die für die Durchführung grundlegender Bildverarbeitungsaufgaben wie Unschärfe, Bildüberblendung, Verbesserung der Bild- und Videoqualität, Schwellenwertbildung usw. sehr beliebt ist. Zusätzlich zur Bildverarbeitung bietet es verschiedene vortrainierte Deep Learning-Funktionen Modelle, mit denen sich einfache Aufgaben direkt lösen lassen.
Für die Opencv-Installation verwenden Sie diesen Link
www.instructables.com/id/Opencv-and-Python…
Schritt 1: Gesichtserkennung in einem Echtzeitvideo
Sie können bei Google nach vielen Gesichtserkennungsprogrammen suchen und die erkannten Gesichter sollten in einem Ordner für die weitere Bildverarbeitung wie Training und Beschriftung gespeichert werden. Wir werden 30 Proben sammeln
CV2 importieren
numpy als np importieren
import os import sys
Kamera = cv2. VideoCapture(0)
faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml") #fügen Sie Ihren Harcascade-Dateipfad hinzu
name = raw_input("Wie ist sein/ihr Name?")
#alle Dateien werden im Ordner Users/prasad/Documents/images gespeichert
dirName = "/Users/prasad/Documents/images/" + name
print(dirName) falls nicht os.path.exists(dirName): os.makedirs(dirName) print("Verzeichnis erstellt") else: print("Name existiert bereits") sys.exit()
zählen = 1
#wir werden 30 Proben sammeln
while count 30: break # frame = frame.array grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, 1.5, 5) for (x, y, w, h) in Faces: roiGray = grey[y:y+h, x:x+w] fileName = dirName + "/" + name + str(count) + ".jpg" cv2.imwrite(fileName, roiGray) cv2.imshow("face", roiGray) cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count += 1 cv2.imshow('frame', frame) key = cv2.waitKey(1)
wenn Schlüssel == 27:
brechen
#camera.release()
cv2.destroyAllWindows()
Schritt 2: Trainieren Sie Ihre Beispielbilder
Nachdem die Gesichtserkennung abgeschlossen ist, können wir die Bilder trainieren
import osimport numpy as np from PIL import Image import cv2 import pickle #import serial
#ser = serial. Serial('/dev/ttyACM0', 9600, timeout=1)
faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")
Recognizer = cv2.face. LBPHFaceRecognizer_create()
baseDir = os.path.dirname(os.path.abspath(_file_))
#trainieren Sie die Bilder unter dem Bilderordner
imageDir = os.path.join(baseDir, "images")
StromId = 1
labelIds = {} yLabels = xTrain = #ser.write("Training…..".encode())
für root, dirs, Dateien in os.walk(imageDir):
print(root, dirs, files) für Datei in Dateien: print(file) if file.endswith("png") or file.endswith("jpg"): path = os.path.join(root, file) label = os.path.basename(root) print(label)
wenn kein Label in LabelIds:
labelIds[label] = currentId print(labelIds) currentId += 1
id_ = labelIds[label]
pilImage = Image.open(path).convert("L") imageArray = np.array(pilImage, "uint8")faces = faceCascade.detectMultiScale(imageArray, scaleFactor=1.1, minNeighbors=5)
für (x, y, w, h) in Flächen:
roi = imageArray[y:y+h, x:x+w] xTrain.append(roi) yLabels.append(id_)
with open("labels", "wb") als f:
pickle.dump(labelIds, f) f.close()
cognizer.train(xTrain, np.array(yLabels))
cognizer.save("trainer.yml") print(labelIds)
Schritt 3: Gesichter erkennen
Nachdem das Training vorbei war, können Sie den folgenden Code ausführen, damit er Ihre trainierten Gesichter erkennt
import osos.environ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO als GPIO from time import sleep
with open('labels', 'rb') as f:
dicti = pickle.load(f) f.close()
Kamera = cv2. VideoCapture(0)
faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")
Erkennung = cv2.face. LBPHFaceRecognizer_create() Erkennung.read("trainer.yml")
Schriftart = cv2. FONT_HERSHEY_SIMPLEX
zuletzt=''
#for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
while True: ret, frame = camera.read() grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5) for (x, y, w, h) in Gesichtern: roiGray = grau[y:y+h, x:x+w]
id_, conf =cognizer.predict(roiGray)
für Name, Wert in dicti.items():
if value == id_: print(name) cv2.putText(frame, name, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) if name!=last: last= name if conf <= 70: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('Rahmen', Rahmen)
Schlüssel = cv2.waitKey(1)
wenn Schlüssel == 27:
cv2.destroyAllWindows() brechen
Empfohlen:
Gesichtserkennung auf Raspberry Pi 4B in 3 Schritten
Gesichtserkennung auf Raspberry Pi 4B in 3 Schritten: In diesem Instructable werden wir die Gesichtserkennung auf Raspberry Pi 4 mit Shunya O / S mit der Shunyaface-Bibliothek durchführen. Shunyaface ist eine Bibliothek zur Gesichtserkennung/-erkennung. Das Projekt zielt darauf ab, die schnellste Erkennungs- und Erkennungsgeschwindigkeit mit
Gesichtserkennung in Echtzeit: ein End-to-End-Projekt – wikiHow
Echtzeit-Gesichtserkennung: ein End-to-End-Projekt: In meinem letzten Tutorial zur Erkundung von OpenCV haben wir AUTOMATIC VISION OBJECT TRACKING gelernt. Jetzt werden wir unsere PiCam verwenden, um Gesichter in Echtzeit zu erkennen, wie Sie unten sehen können: Dieses Projekt wurde mit dieser fantastischen "Open Source Computer Vision Library&qu