Inhaltsverzeichnis:

Opencv Gesichtserkennung, Training und Erkennung - Gunook
Opencv Gesichtserkennung, Training und Erkennung - Gunook

Video: Opencv Gesichtserkennung, Training und Erkennung - Gunook

Video: Opencv Gesichtserkennung, Training und Erkennung - Gunook
Video: Gesichtserkennung mit Python und OpenCV in 14 Zeilen 2024, Juli
Anonim
Opencv Gesichtserkennung, Training und Erkennung
Opencv Gesichtserkennung, Training und Erkennung

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: