Tartalomjegyzék:

Opencv arcfelismerés, képzés és felismerés: 3 lépés
Opencv arcfelismerés, képzés és felismerés: 3 lépés

Videó: Opencv arcfelismerés, képzés és felismerés: 3 lépés

Videó: Opencv arcfelismerés, képzés és felismerés: 3 lépés
Videó: Computer Vision Raspberry Pi alapokon – Szalontay Zoltán (IFUA Horváth & Partners) 2024, Július
Anonim
Opencv arcfelismerés, képzés és felismerés
Opencv arcfelismerés, képzés és felismerés

Az OpenCV egy nyílt forráskódú számítógépes látáskönyvtár, amely nagyon népszerű olyan alapvető képfeldolgozási feladatok elvégzéséhez, mint az elmosódás, a képkeverés, a képminőség javítása, valamint a videó minősége, a küszöbértékek stb. modellek, amelyek közvetlenül használhatók az egyszerű feladatok megoldására.

az opencv telepítéséhez használja ezt a linket

www.instructables.com/id/Opencv-and-Python…

1. lépés: Az arc felismerése valós idejű videóban

a Google -ban sok arcfelismerő programot kereshet, és az észlelt arcokat egy mappába kell menteni a további képfeldolgozási dolgokhoz, például képzéshez és címkézéshez. 30 mintát fogunk gyűjteni

import cv2

importálja a numpy -t np -ként

import os import sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #add a harcascade fájl elérési útját

name = raw_input ("Mi a neve?")

#minden fájl a Users/prasad/Documents/images mappába kerül mentésre

dirName = "/Users/prasad/Documents/images/" + név

print (dirName), ha nem os.path.exists (dirName): os.makedirs (dirName) print ("Címtár létrehozva") else: print ("A név már létezik") sys.exit ()

szám = 1

#30 mintát fogunk gyűjteni

míg a 30 -as szám: break # frame = frame.array szürke = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) arcok = faceCascade.detectMultiScale (szürke, 1,5, 5) az (x, y, w, h) esetén: roiGray = szürke [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("face", roiGray) cv2.rectangle (keret, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('keret', keret) kulcs = cv2.waitKey (1)

ha kulcs == 27:

szünet

#camera.release ()

cv2.destroyAllWindows ()

2. lépés: A mintaképek betanítása

Az Arcfelismerés befejezése után mehetünk a képek betanítására

importálja az osimport numpy -t np -ként a PIL importálásából Image import cv2 import pác #import serial

#ser = serial. Serial ('/dev/ttyACM0', 9600, timeout = 1)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")

felismerő = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ fájl_))

#mozgassa a képeket a képek mappa alatt

imageDir = os.path.join (baseDir, "képek")

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Képzés…..". encode ())

root, dirs, os.walk fájlokban (imageDir):

print (root, dirs, files) a fájlokban lévő fájlokhoz: print (file) if file.endswith ("png") vagy file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) print (címke)

ha nincs címke a címkében

labelIds [label] = currentId print (labelIds) currentId += 1

id_ = labelIds [címke]

pilImage = Image.open (elérési út).convert ("L") imageArray = np.array (pilImage, "uint8") arcok = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbors = 5)

(x, y, w, h) esetén:

roi = imageArray [y: y+h, x: x+w] xTrain.append (roi) yLabels.append (id_)

nyitott ("címkék", "wb"), mint f:

savanyúság.dump (labelIds, f) f.close ()

elismerő.vonat (xTrain, np.array (yLabels))

elismerő.save ("trainer.yml") print (labelIds)

3. lépés: Az arcok felismerése

az edzés befejezése után futtathatja az alábbi kódot, hogy elkezdje felismerni képzett arcát

import osos.environ ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pácolt #import RPi. GPIO mint GPIO from time import alvó

nyitott ("címkék", "rb") mint f:

dicti = savanyúság. terhelés (f) f. zárás ()

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")

felismerő = cv2.face. LBPHFaceRecognizer_create () felismerő.read ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

utolsó ="

#for frame in camera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

míg igaz: ret, frame = camera.read () szürke = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) arcok = faceCascade.detectMultiScale (szürke, scaleFactor = 1,5, minNeighbours = 5) (x, y, w, h) arcokban: roiGray = szürke [y: y+h, x: x+w]

id_, conf = felismerő.predict (roiGray)

név, érték a dicti.items () fájlban:

if value == id_: print (név) cv2.putText (keret, név, (x, y), betűtípus, 2, (0, 0, 255), 2, cv2. LINE_AA) ha név! = last: last = név, ha conf <= 70: cv2.rectangle (frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('keret', keret)

kulcs = cv2.waitKey (1)

ha kulcs == 27:

break cv2.destroyAllWindows ()

Ajánlott: