021-71053903 [email protected] پشتیبانی از شنبه تا چهارشنبه ساعت 9 الی 16

تشخیص چهره در پایتون با OpenCV

تشخیص چهره با پایتون

تشخیص چهره با پایتون

منبع عکس : ANA-Photo

عکاس : علی احمدوند

هدف مقاله :

  • ساخت نرم افزار تشخیص چهره با پایتون

نسخه ها:

  • پایتون 3.9
  • OpenCv 4.4.5

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

ما با استفاده از کتابخانه OpenCv در پایتون می خواهیم به تشخیص صورت در عکس و یا ویدیو هایی در زندگی روزمره با آن سرو کار داریم استفاده کنیم و صورت اشخاص را پیدا کنیم.

اگر نمی دانید کتابخانه OpenCv چیست به این مقاله رجوع کنید

خوب برای استفاده کتابخانه Opencv باید این کتابخانه را بر روی سیستم عامل خود از قبل نصب داشته باشد و بعد به ادامه آموزش بپردازید. اما اگر این کتابخانه را بر روی سیستم عامل خود از قبل ندارید می توانید می توانید با استفاده از پکیج منجر PIP بر روی سیستم عامل خود نصب کنید:

pip install opencv-python

توضیح روند کار نرم افزار:

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

haarcascade_frontalface_default_default.xml

استفاده کنیم.

دقت داشته باشید این پروژه می تواند به صورت لایو و یا زنده بر روی لب تاب شما واقعا کار کند اما این فقط قسمت اول ماجراست به راستی ما واقعا چه استفاده های مفیدی می توانید از این نرم افزار بکنیم ؟

بعضی استفاده های این متود را می تواند به صورت زیر لیست کرد:

  • تشخیص ماسک زدن افراد در شرایط اپیدمی کرونا
  • تشخیص تقلب در جلسات امتحان
  • تشخیص خواب آلودگی در حین رانندگی
  • و …

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

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

نکته* :: اگر نمی خواهید درگیر کد نویسی شوید می توانید با استفاده از قسمت دانلود باکس در همین مقاله کد های مورد نظر خود را دانلود کنید و سپس اجرا کنید.

کد نرم افزار شناسایی چهره در عکس:

import cv2

# Load the cascade
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# Read the input image
img = cv2.imread('index.jpg')

# Convert into grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Detect faces
faces = face_cascade.detectMultiScale(gray, 1.1, 4)

# Draw rectangle around the faces
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    cv2.putText(img, 'Pythoniha.ir', (x, y),cv2.FONT_HERSHEY_SIMPLEX, 0.4, (255,255,255), 1)

# Display the output
cv2.imshow('img', img)
cv2.waitKey()

 

کد شناسایی چهره در فایل ویدیویی:



 

import cv2
 
# Load the cascade
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# To capture video from webcam.
cap = cv2.VideoCapture(0)
# To use a video file as input
# cap = cv2.VideoCapture('filename.mp4')
while True:
    # Read the frame
    _, img = cap.read()
    # Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # Detect the faces
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)
    # Draw the rectangle around each face
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    # Display
    cv2.imshow('img', img)
    # Stop if escape key is pressed
    k = cv2.waitKey(30) & 0xff
    if k==27:
        break
# Release the VideoCapture object
cap.release()

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

محمدرضا حسنی

224 مطلب منتشر شده

دانش آموخته رشته فناوری اطلاعات / موسس پایتونی ها

درباره این مطلب نظر دهید !

مطالب پرمخاطب پایتونی ها

محصولات فروش پایتونی ها

%60
تخفیف

آموزش فیگما (Figma)

30,000 تومان
3
%69
تخفیف

آموزش برنامه نویسی پایتون

35,000 تومان
2