Daftar Isi:

Deteksi Wajah Opencv, Pelatihan dan Pengenalan: 3 Langkah
Deteksi Wajah Opencv, Pelatihan dan Pengenalan: 3 Langkah

Video: Deteksi Wajah Opencv, Pelatihan dan Pengenalan: 3 Langkah

Video: Deteksi Wajah Opencv, Pelatihan dan Pengenalan: 3 Langkah
Video: [MUDAH] Face Detection OpenCV Python Terbaru 2022 2024, Juli
Anonim
Deteksi Wajah, Pelatihan, dan Pengenalan Opencv
Deteksi Wajah, Pelatihan, dan Pengenalan Opencv

OpenCV adalah perpustakaan visi komputer open source yang sangat populer untuk melakukan tugas pemrosesan gambar dasar seperti pengaburan, pencampuran gambar, peningkatan kualitas gambar serta video, ambang batas, dll. Selain pemrosesan gambar, OpenCV menyediakan berbagai pembelajaran mendalam yang telah dilatih sebelumnya. model yang dapat langsung digunakan untuk menyelesaikan tugas-tugas sederhana.

untuk instalasi opencv gunakan tautan ini

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

Langkah 1: Mendeteksi Wajah dalam Video Waktu Nyata

Anda dapat mencari di Google untuk banyak program deteksi wajah dan wajah yang terdeteksi harus disimpan dalam folder untuk pemrosesan gambar lebih lanjut seperti pelatihan dan pelabelan. kami akan mengumpulkan 30 sampel

impor cv2

impor numpy sebagai np

impor os impor sys

kamera = cv2. VideoCapture(0)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml") #tambahkan jalur file harcascade Anda

name = raw_input("Siapa Namanya? ")

#semua file akan disimpan di folder Users/prasad/Documents/images

dirName = "/Users/prasad/Documents/images/" + nama

print(dirName) jika bukan os.path.exists(dirName): os.makedirs(dirName) print("Directory Created") else: print("Name sudah ada") sys.exit()

hitung = 1

#kami akan mengumpulkan 30 sampel

sementara hitungan 30: break # frame = frame.array grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale(abu-abu, 1,5, 5) untuk (x, y, w, h) pada wajah: roiGray = abu-abu[y:y+h, x:x+w] namafile = 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.tungguKunci(1)

jika kunci == 27:

merusak

#kamera.rilis()

cv2.destroySemuaWindows()

Langkah 2: Latih Contoh Gambar Anda

Setelah Deteksi Wajah selesai maka kita bisa pergi untuk melatih gambar

impor osimport numpy sebagai np dari PIL impor Gambar impor cv2 impor acar #import serial

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

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

pengenal = cv2.face. LBPHFaceRecognizer_create()

baseDir = os.path.dirname(os.path.abspath(_file_))

#latih gambar di bawah folder gambar

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

ID saat ini = 1

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

untuk root, dir, 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 = os.path.basename(root) print(label)

jika tidak beri label di labelIds:

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

id_ = labelIds[label]

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

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

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

dengan open("labels", "wb") sebagai f:

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

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

recognitionr.save("trainer.yml") print(labelIds)

Langkah 3: Mengenali Wajah

setelah pelatihan selesai sekarang Anda dapat menjalankan kode di bawah ini sehingga akan mulai mengenali wajah Anda yang terlatih

import osos.environ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO dari waktu import sleep

dengan open('labels', 'rb') sebagai f:

dicti = acar.load(f) f.close()

kamera = cv2. VideoCapture(0)

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

pengenal = cv2.face. LBPHFaceRecognizer_create() pengenal.read("pelatih.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

terakhir=''

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

while True: ret, frame = camera.read() grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale(abu-abu, scaleFactor = 1.5, minNeighbors = 5) untuk (x, y, w, h) di wajah: roiGray = abu-abu[y:y+h, x:x+w]

id_, conf = pengenal.predict(roiGray)

untuk nama, nilai di 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= nama jika conf <= 70: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow('bingkai', bingkai)

kunci = cv2.waitKey(1)

jika kunci == 27:

istirahat cv2.destroyAllWindows()

Direkomendasikan: