تشخیص چهره با استفاده از پایتون و OpenCV : اوپن سی وی یک کتابخانه است که برای انجام پردازش تصویر با استفاده از زبان های برنامه نویسی مانند پایتون استفاده می شود. این پروژه از کتابخانه OpenCV برای ایجاد تشخیص چهره در زمان واقعی با استفاده از وب کم شما به عنوان دوربین اصلی استفاده می کند.
موارد مورد نیاز برای اجرای پروژه تشخیص چهره :
- Python
- OpenCV
- Numpy
- Haar Cascade Frontal face classifiers
رویکرد/الگوریتم های تشخیص چهره مورد استفاده: این پروژه از الگوریتم LBPH (Histograms Patterns Local Binary Patterns) برای تشخیص چهره ها استفاده می کند. پیکسل های یک تصویر را با آستانه گذاری در همسایگی هر پیکسل برچسب گذاری می کند و نتیجه را به عنوان یک عدد باینری در نظر می گیرد.
رایج ترین راه برای تشخیص صورت (یا هر شی) استفاده از “طبقه بندی کننده آبشار هار” است. تشخیص اشیاء با استفاده از طبقهبندیکنندههای آبشاری مبتنی بر ویژگی هار یک روش موثر تشخیص شی است که توسط پل ویولا و مایکل جونز در مقاله خود، “تشخیص سریع شی با استفاده از یک آبشار تقویتشده از ویژگیهای ساده” در سال 2001 پیشنهاد شده است. این یک رویکرد مبتنی بر یادگیری ماشینی است که در آن تابع آبشار از بسیاری از تصاویر مثبت و منفی آموزش دیده است. سپس برای تشخیص اشیاء در تصاویر دیگر استفاده می شود. OpenCV از قبل شامل بسیاری از طبقهبندیکنندههای را از پیش آموزش داده است: برای صورت، چشمها، لبخند و غیره در مخزن گیتهاب آن وجود دارد . که به صورت فایلهای XML هستند و آنها را میتوانید از فهرست haarcascades دانلود کنید.
نحوه استفاده:
یک دایرکتوری در کامپیوتر خود ایجاد کنید و یک نام آن برای آن بگذارید (مثلا faceDetectionPrj) یک فایل پایتون به نام face_recognize.py ایجاد کنید، کد زیر در آن کپی کنید. haarcascade_frontalface_default.xml را در پوشه پروژه کپی کنید، می توانید آن را از اینجا دانلود کنید. اکنون آماده اجرای کدهای زیر هستید.
import numpy as np
import cv2
faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while True:
ret, img = cap.read()
img = cv2.flip(img, -1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5
,
minSize=(20, 20)
)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
cv2.imshow('video',img)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
مشاهده همه آموزش های پایتون
توجه: برنامه های فوق در IDE آنلاین اجرا نمی شوند.
دیدگاهتان را بنویسید