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

مرحله 1: نصب OpenCV

برای ساخت یک سیستم تشخیص چهره با OpenCV ابتدا باید OpenCV را نصب کنید. اگر هنوز این کتابخانه را نصب نکرده‌اید، می‌توانید از دستور زیر استفاده کنید:

pip install opencv-python
pip install opencv-python-headless

مرحله 2: وارد کردن کتابخانه‌ها

ابتدا کد خود را با وارد کردن کتابخانه‌های مورد نیاز آغاز کنید:

import cv2

مرحله 3: بارگذاری مدل تشخیص چهره

OpenCV از فایل‌های آماده Haar Cascade برای تشخیص چهره استفاده می‌کند. فایل مدل مورد نیاز (haarcascade_frontalface_default.xml) را از مخزن رسمی OpenCV دانلود کنید یا آن را از طریق لینک زیر دریافت کنید:
دانلود فایل Haar Cascade

سپس فایل را در پوشه پروژه خود قرار دهید.

مرحله 4: بارگذاری تصویر و تشخیص چهره

کد زیر برای تشخیص چهره‌ها در یک تصویر استفاده می‌شود:

# بارگذاری فایل مدل
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# بارگذاری تصویر
image = cv2.imread(‘test.jpg’) # جایگزین با مسیر تصویر خود
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# تشخیص چهره‌ها
faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# رسم مستطیل دور چهره‌ها
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

# نمایش تصویر
cv2.imshow(‘Detected Faces’, image)
cv2.waitKey(0)
cv2.destroyAllWindows()

آموزش مقدماتی پایتون (رایگان)

توضیح کد

  • face_cascade.detectMultiScale: این تابع چهره‌ها را شناسایی می‌کند.
    • scaleFactor: میزان کاهش اندازه تصویر در هر مرحله. مقدار معمولاً 1.1 است.
    • minNeighbors: تعداد مستطیل‌هایی که باید برای یک چهره تأیید شوند. مقدار بالاتر دقت را افزایش می‌دهد اما ممکن است چهره‌های کوچک‌تر را نادیده بگیرد.
    • minSize: حداقل اندازه چهره‌ها.
  • cv2.rectangle: یک مستطیل دور چهره‌های شناسایی‌شده رسم می‌کند.

مرحله 5: تشخیص چهره در ویدئو

برای استفاده از دوربین یا ویدئو، می‌توانید کد زیر را به کار ببرید:

# بارگذاری فایل مدل
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# دسترسی به دوربین
cap = cv2.VideoCapture(0)

while True:
ret, frame = cap.read()
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# تشخیص چهره‌ها
faces = face_cascade.detectMultiScale(gray_frame, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# رسم مستطیل دور چهره‌ها
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)

cv2.imshow(‘Video – Detected Faces’, frame)

# فشردن ‘q’ برای خروج
if cv2.waitKey(1) & 0xFF == ord(‘q’):
break

cap.release()
cv2.destroyAllWindows()

مرحله 6: نکات بهینه‌ سازی

  1. استفاده از مدل‌های دقیق‌تر:
    فایل‌های Haar Cascade ساده هستند و ممکن است برای تشخیص چهره‌های پیچیده دقت کافی نداشته باشند. مدل‌هایی مانند DNN‌ها یا MTCNN گزینه‌های پیشرفته‌تری هستند.
  2. کاهش نویز تصویر:
    استفاده از فیلترهای پیش‌پردازشی مانند GaussianBlur می‌تواند دقت تشخیص را افزایش دهد.

    gray_image = cv2.GaussianBlur(gray_image, (5, 5), 0)

نتیجه‌ گیری

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