فهرست مطالب:

تشخیص چهره ، آموزش و تشخیص Opencv: 3 مرحله
تشخیص چهره ، آموزش و تشخیص Opencv: 3 مرحله

تصویری: تشخیص چهره ، آموزش و تشخیص Opencv: 3 مرحله

تصویری: تشخیص چهره ، آموزش و تشخیص Opencv: 3 مرحله
تصویری: پردازش تصویر در پایتون - 14 - تشخیص چهره 2024, نوامبر
Anonim
تشخیص چهره ، آموزش و تشخیص Opencv
تشخیص چهره ، آموزش و تشخیص Opencv

OpenCV یک کتابخانه بینایی رایانه منبع باز است که برای انجام وظایف اصلی پردازش تصویر مانند تار شدن ، ترکیب تصویر ، افزایش تصویر و همچنین کیفیت فیلم ، آستانه و غیره بسیار محبوب است. علاوه بر پردازش تصویر ، یادگیری عمیق از قبل آموزش داده شده را نیز فراهم می کند. مدلهایی که می توانند مستقیماً برای حل کارهای ساده در دست استفاده شوند.

برای نصب opencv از این پیوند استفاده کنید

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

مرحله 1: تشخیص چهره در ویدئوی زمان واقعی

می توانید بسیاری از برنامه های تشخیص چهره را در گوگل جستجو کنید و چهره های شناسایی شده باید در پوشه ای برای پردازش بیشتر تصاویر مانند آموزش و برچسب گذاری ذخیره شوند. ما قصد داریم 30 نمونه جمع آوری کنیم

واردات cv2

وارد کردن numpy به عنوان np

import os import sys

دوربین = cv2. فیلم برداری (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #مسیر فایل harcascade خود را اضافه کنید

name = raw_input ("نام او/او چیست؟")

#همه فایلها در پوشه Users/prasad/Documents/images ذخیره می شوند

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

چاپ کنید (dirName) اگر نه os.path.exists (dirName): os.makedirs (dirName) print ("Directory Created") else: print ("Name is above") sys.exit ()

شمارش = 1

#ما قصد داریم 30 نمونه جمع آوری کنیم

در حالی که تعداد 30: break # frame = frame.array خاکستری = cv2.cvtColor (frame، cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale (خاکستری ، 1.5 ، 5) برای (x ، y ، w ، h) در چهره ها: roiGray = خاکستری [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)

اگر کلید == 27:

زنگ تفريح

#camera.release ()

cv2.destroyAllWindows ()

مرحله 2: آموزش تصاویر نمونه خود

پس از تکمیل تشخیص چهره ، می توانیم به آموزش تصاویر بپردازیم

import osimport numpy به عنوان np از PIL import Image واردات cv2 ترشی واردات #سریال واردات

#ser = سریال. سریال ('/dev/ttyACM0'، 9600، timeout = 1)

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

شناسه = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ فایل_))

#تصاویر را در زیر پوشه تصاویر آموزش دهید

imageDir = os.path.join (baseDir ، "images")

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("آموزش…..". رمزگذاری ())

برای root ، dirs ، فایل ها در os.walk (imageDir):

print (root، dirs، files) برای فایل در فایلها: print (file) if file.endswith ("png") یا file.endswith ("jpg"): path = os.path.join (root، file) label = os.path.basename (ریشه) چاپ (برچسب)

اگر برچسب در 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)

برای (x ، y ، w ، h) در صورت:

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

با باز ("برچسب" ، "wb") به عنوان f:

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

تشخیص (آموزش) (xTrain، np.array (yLabels))

چاپ تشخیص کننده (ذخیره ("trainer.yml") (labelIds)

مرحله 3: تشخیص چهره ها

پس از اتمام آموزش اکنون می توانید کد زیر را اجرا کنید تا تشخیص چهره های آموزش دیده شما شروع شود

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

با باز ("برچسب" ، "rb") به عنوان f:

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

دوربین = cv2. فیلم برداری (0)

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

شناسه = cv2.face. LBPHFaceRecognizer_create () αναγνώστη. خواندن ("trainer.yml")

font = cv2. FONT_HERSHEY_SIMPLEX

آخرین = ""

#برای قاب در camera.capture_continuous (rawCapture، format = "bgr"، use_video_port = True):

while True: ret، frame = camera.read () gray = cv2.cvtColor (frame، cv2. COLOR_BGR2GRAY) چهره = faceCascade.detectMultiScale (خاکستری ، scaleFactor = 1.5 ، minNeighbors = 5) برای (x ، y ، w ، h) در چهره ها: roiGray = خاکستری [y: y+h ، x: x+w]

id_، conf = nas.predict (roiGray)

برای نام ، مقدار در 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 ("قاب" ، قاب)

کلید = cv2.waitKey (1)

اگر کلید == 27:

شکستن cv2.destroyAllWindows ()

توصیه شده: