Mục lục:

Nhận diện, đào tạo và nhận diện khuôn mặt Opencv: 3 bước
Nhận diện, đào tạo và nhận diện khuôn mặt Opencv: 3 bước

Video: Nhận diện, đào tạo và nhận diện khuôn mặt Opencv: 3 bước

Video: Nhận diện, đào tạo và nhận diện khuôn mặt Opencv: 3 bước
Video: Dùng Machine Learning để build AI nhận diện vật thể (Siêu dễ, không cần Code) 2024, Tháng bảy
Anonim
Nhận diện, đào tạo và nhận diện khuôn mặt Opencv
Nhận diện, đào tạo và nhận diện khuôn mặt Opencv

OpenCV là một thư viện thị giác máy tính mã nguồn mở rất phổ biến để thực hiện các tác vụ xử lý hình ảnh cơ bản như làm mờ, trộn hình ảnh, nâng cao chất lượng hình ảnh cũng như video, tạo ngưỡng, v.v. Ngoài xử lý hình ảnh, nó cung cấp nhiều phương pháp học sâu được đào tạo trước. các mô hình có thể được sử dụng trực tiếp để giải quyết các công việc đơn giản trong tầm tay.

để cài đặt opencv, hãy sử dụng liên kết này

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

Bước 1: Nhận diện khuôn mặt trong video thời gian thực

bạn có thể tìm kiếm trên google cho nhiều chương trình phát hiện khuôn mặt và các khuôn mặt được phát hiện sẽ được lưu trong một thư mục để xử lý hình ảnh thêm những thứ như đào tạo và dán nhãn. chúng tôi sẽ thu thập 30 mẫu

nhập cv2

nhập numpy dưới dạng np

nhập hệ thống nhập hệ điều hành

camera = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #thêm đường dẫn tệp harcascade của bạn

name = raw_input ("Tên của anh ấy / cô ấy là gì?")

# tất cả các tệp sẽ được lưu trong thư mục Người dùng / prasad / Tài liệu / hình ảnh

dirName = "/ Users / prasad / Documents / images /" + tên

print (dirName) if not os.path.exists (dirName): os.makedirs (dirName) print ("Directory Created") else: print ("Tên đã tồn tại") sys.exit ()

đếm = 1

# chúng tôi sẽ thu thập 30 mẫu

trong khi đếm 30: break # frame = frame.array gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale (xám, 1,5, 5) cho (x, y, w, h) trong các khuôn mặt: roiGray = gray [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)

phím if == 27:

nghỉ

# camera.release ()

cv2.destroyAllWindows ()

Bước 2: Đào tạo hình ảnh mẫu của bạn

Sau khi nhận diện khuôn mặt hoàn thành, chúng tôi có thể đi đào tạo hình ảnh

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")

Recogzer = cv2.face. LBPHFaceRecognizer_create ()

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

#train hình ảnh trong thư mục hình ảnh

imageDir = os.path.join (baseDir, "hình ảnh")

currentId = 1

labelIds = {} yLabels = xTrain = # ser.write ("Đào tạo…..". encode ())

cho root, dirs, tệp trong os.walk (imageDir):

print (root, dirs, files) cho file trong files: print (file) if file.endswith ("png") or file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) print (label)

nếu không có nhãn trong labelIds:

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

id_ = labelIds [label]

pilImage = Image.open (đường dẫn).convert ("L") imageArray = np.array (pilImage, "uint8") face = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minNeighbors = 5)

for (x, y, w, h) in the face:

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

với mở ("nhãn", "wb") là f:

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

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

Recogzer.save ("trainr.yml") print (labelIds)

Bước 3: Nhận dạng khuôn mặt

sau khi quá trình đào tạo kết thúc, bạn có thể chạy đoạn mã dưới đây để nó bắt đầu nhận dạng các khuôn mặt đã được đào tạo của bạn

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

với open ('label', 'rb') là f:

Dictionary = pickle.load (f) f.close ()

camera = cv2. VideoCapture (0)

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

Recogzer = cv2.face. LBPHFaceRecognizer_create () Recogzer.read ("trainr.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

cuối cùng = ''

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

trong khi True: ret, frame = camera.read () gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale (gray, scaleFactor = 1.5, minNeighbors = 5) for (x, y, w, h) trong khuôn mặt: roiGray = gray [y: y + h, x: x + w]

id_, conf = Recogzer.p Dự đoán (roiGray)

cho tên, giá trị trong Dictionary.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 = đặt tên nếu conf <= 70: cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow ('frame', frame)

key = cv2.waitKey (1)

phím if == 27:

ngắt cv2.destroyAllWindows ()

Đề xuất: