سلام

امروز میخوام درباره بحث جذاب و شیرین تشخیص چهره حرف بزنم تازه اون هم با زبان شیرین پایتون این آموزش یه آموزش خیلی راحته و مثله بعضی سایتا توضیحات بیهوده و الکی ندادمfrownدرضمن تشخیص چهره با پایتون هم همینجا میتونید یادبگیرید و حتی میتونید از روی عکس و فیلم هم تشخیص چهره کنید!!!

با ماهمراه باشید...

مواد لازم:

  • مفسر پایتون
  • کتابخانه opencv که در ادامه راجبش حرف میزنیم
  • کتابخانه numpy که اونم راجبش حرف میزنیم
  • فایل های xml چشم و صورت که اونم راجبش حرف میزنیمlaugh

من میدونم که همتون پایتون را دارید و اگر هم که ندارید نصف عمرتون به فناست ... پس برید پایتون را دانلود و نصب کنید اگه سرچ بکنید نتایج زیادی میبینید....

 مرحله 1:

الان باید کتابخونه های opencv و numpy را که خیلی کتابخانه های عجیبی هستن وکاربرد خیلی زیادی دارند را نصب کنید و همونجور که میدونید برای نصب یک کتابخانه روی پایتون بایداز دستور pip در cmd استفاذه کنید:

پس روی کیبورد win + R بگیرید و توی پنجره باز شده cmd را تایپ کنید و اینتر بزنید تا پنجره سیاه cmd باز بشه

حالا داخلش کد زیر را وارد کنید:

pip install numpy --upgrade

و بعد از اینکه numpy را نصب کردید کد زیر را وارد کنید تا opencv نصب بشه:

pip install opencv-python --upgrade

تا اینجا که خوب پیش رفتید

مرحله 2:

حالا نیاز به دو تا فایل xml برای تشخیص چهره داریم که هم میتونید اون هارا از github دانلود کنیم و هم میتونید این فایلی که من اینجا گذاشتم را دانلود کنید که به نظرم گزینه دوم هزار برابر راحت تر از گزینه اوله:

لینک دانلود از گیت هاب: opencv

لینک دانلود دوتا فایل مورد نظر:

دریافت
حجم: 174 کیلوبایت
توضیحات: دوتا فایل مورد نیاز اینجا هستن
 

مرحله 3:

یه فایل پایتون کنار اون دوتا فایل xml درست کنید و کد های زیر را داخلش قرار بدید:

import cv2
import numpy as np

#clevers.ir

face_xml = cv2.CascadeClassifier('face.xml')
eye_xml = cv2.CascadeClassifier('eye.xml')

cap = cv2.VideoCapture(0)

while True:
    _,frame=cap.read()

    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    faces = face_xml.detectMultiScale(gray)
    for (x,y,w,h) in faces :
        cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
        r_gray=gray[x:x+w,y:y+h]
        r_color= frame[x:x+w,y:y+h]
        eyes=eye_xml.detectMultiScale(r_gray)
        for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(r_color,(ex,ey),(ex+ew,ey+eh),(255,0,0),2)
    cv2.imshow('faceDisplay',frame)
    k = cv2.waitKey(27) & 0xff
    if k==27:
        break
cap.release()
cv2.destroyAllWindows()

اگه به خط نهم دقت کنید یعنی اینجا 

....
cap = cv2.VideoCapture(0)
....

اگه توی پرانتز عدد 0 را مثل مثال بالا وارد کنید از طریق وبکم لپ تاپ چهره شما تشخیص داده میشه ولی اگه مثل مثال زیر عکس یا فیلمی را وارد کنید از روی اون عکس یا فیلم تشخیص چهره انجام میشه:

cap = cv2.VideoCapture("اسم فیلم یا عکس.jpg")

دقت کنید که فرمت عکس یا فیلم شما هرچیزی میتونه باشه(jpg,mp4,png,avi,...)پس خودتونو به مثال بالا محدود نکنید و هرچیزی را که دوست دارید قرار بدید.

و بالاخره کار تموم میشه و میتونید برنامه ای که ساختید را تست کنید.

چند نمونه تشخیص چهره که انجام دادم:

بیل گیتس

 

محمرضا گلزار

 

گاندی

 

جک لندن_نویسنده

 

پهلوان تختی

 

همونجور که میبینید این فایل ها یه اشکالات ریزی دارن که قابل برطرف کردن نیستن مثله عکس محمدرضا گلزار یا تشخیص ندادن چشمان گاندی

نکته:برای خروج از برنامه باید از کلید Esc از کنار کیبورد استفاده کنید

امیدوارم که از این آموزش هم لذت کافی برده باشین...

موفق باشید