Isi kandungan:

Pengesanan, Latihan dan Pengiktirafan Wajah Opencv: 3 Langkah
Pengesanan, Latihan dan Pengiktirafan Wajah Opencv: 3 Langkah

Video: Pengesanan, Latihan dan Pengiktirafan Wajah Opencv: 3 Langkah

Video: Pengesanan, Latihan dan Pengiktirafan Wajah Opencv: 3 Langkah
Video: 【Multi Sub】《最强反套路系统》第1~87集 | 穿越者徐缺踏上了一条套路之路,每天不是在套路,就是正在去套路的路上!套路横扫修仙界,就问一声还有谁?!#热血 #穿越 #修仙 #逆袭 2024, Julai
Anonim
Pengesanan, Latihan dan Pengiktirafan Wajah Opencv
Pengesanan, Latihan dan Pengiktirafan Wajah Opencv

OpenCV adalah pustaka penglihatan komputer sumber terbuka yang sangat popular untuk melakukan tugas pemprosesan gambar asas seperti pengaburan, pencampuran gambar, peningkatan gambar serta kualiti video, ambang batas dll. Selain pemprosesan gambar, ia menyediakan pelbagai pembelajaran mendalam yang telah dilatih model yang boleh digunakan secara langsung untuk menyelesaikan tugas mudah di tangan.

untuk pemasangan opencv gunakan pautan ini

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

Langkah 1: Mengesan Wajah dalam Video Masa Nyata

anda boleh mencari di google untuk banyak program pengesanan wajah dan wajah yang dikesan harus disimpan dalam folder untuk memproses gambar lebih lanjut seperti latihan dan pelabelan. kita akan mengumpulkan 30 sampel

import cv2

import numpy sebagai np

import os import sys

kamera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #tambahkan laluan fail harcascade anda

name = raw_input ("Apa namanya?")

#semua fail akan disimpan di bawah folder Pengguna / prasad / Dokumen / gambar

dirName = "/ Pengguna / prasad / Dokumen / gambar /" + nama

cetak (dirName) jika tidak os.path.exists (dirName): os.makedirs (dirName) cetak ("Direktori Dibuat") lain: cetak ("Nama sudah ada") sys.exit ()

kiraan = 1

#kami akan mengumpulkan 30 sampel

sementara kiraan 30: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale (grey, 1.5, 5) untuk (x, y, w, h) di wajah: roiGray = kelabu [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("face", roiGray) cv2. segi empat tepat (bingkai, (x, y), (x + w, y + h), (0, 255, 0), 2) kiraan + = 1 cv2. tunjukkan ('bingkai', bingkai) kunci = cv2.waitKey (1)

jika kunci == 27:

rehat

# camera.release ()

cv2.destroyAllWindows ()

Langkah 2: Latih Gambar Contoh Anda

Setelah Pengesanan Muka selesai maka kita boleh melatih gambar

import osimport numpy sebagai np dari PIL import Imej import cv2 import acar #import bersiri

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

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

mengenali = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ fail_))

#latih gambar di bawah folder gambar

imageDir = os.path.join (baseDir, "gambar")

currentId = 1

labelIds = {} yLabels = xTrain = # ser.write ("Latihan…..". encode ())

untuk root, dirs, file di os.walk (imageDir):

print (root, dirs, files) untuk file dalam file: print (file) if file.endswith ("png") atau file.endswith ("jpg"): path = os.path.join (root, file) label = cetakan (label) os.path.basename (root)

jika tidak dilabel dalam labelIds:

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

id_ = labelIds [label]

pilImage = Image.open (path).convert ("L") imageArray = np.array (pilImage, "uint8") wajah = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbour = 5)

untuk (x, y, w, h) di muka:

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

dengan terbuka ("label", "wb") sebagai f:

pickle.dump (labelIds, f) f. tutup ()

mengenali.train (xTrain, np.array (yLabels))

printizer.save ("trainer.yml") cetakan (labelIds)

Langkah 3: Mengenali Wajah

setelah latihan selesai sekarang anda boleh menjalankan kod di bawah sehingga ia akan mula mengenali wajah anda yang terlatih

import osos.environ ['PYTHONINSPECT'] = 'on' import cv2 import numpy sebagai np import acle #import RPi. GPIO sebagai GPIO dari waktu import import

dengan terbuka ('label', 'rb') sebagai f:

dicti = pickle.load (f) f.tutup ()

kamera = cv2. VideoCapture (0)

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

mengenali = cv2.face. LBPHFaceRecognizer_create () recognitionizer.read ("trainer.yml")

fon = cv2. FONT_HERSHEY_SIMPLEX

terakhir ="

#untuk bingkai dalam kamera.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

sementara True: ret, frame = camera.read () grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale (kelabu, skalaFactor = 1.5, minNeighbour = 5) untuk (x, y, w, h) di muka: roiGray = kelabu [y: y + h, x: x + w]

id_, conf = mengenali.predict (roiGray)

untuk nama, nilai dalam dicti.items ():

jika nilai == id_: cetak (nama) cv2.putText (bingkai, nama, (x, y), fon, 2, (0, 0, 255), 2, cv2. LINE_AA) jika nama! = terakhir: terakhir = nama jika conf <= 70: cv2.rectangle (bingkai, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow ('bingkai', bingkai)

kunci = cv2.waitKey (1)

jika kunci == 27:

rehat cv2.destroyAllWindows ()

Disyorkan: