في هذه المقالة سنعمل على تقنية من تقنيات الذكاء الإصطناعي و هي التعرف على الوجوه أو face recognition
سنقوم باستعمال مكتبة OpenCV الخاصة بلغة البرمجة بايثون
من طبيعة الحال ممكن استعمال مكتبات أخرى مثل : Dlib أو Sickit-image أو Mediapipe أو MTCNN إذا أردنا العمل ب Deep Learning
يجب أولا معرفة ما هي face recognition و في ماذا يمكن أن نستعملها ، و بعدها نعمل تطبيقات بلغة البرمجة بايثون .
التعرف على الوجوه أو face recognition هو وسيلة لتحديد هوية الشخص و تأكيدها باستخدام وجهه ، من بين استعمالات هاد التقنية :
فتح الهواتف ، البحث عن المفقودين ، تحديد الأشخاص الموجودين على منصات وسائل التواصل الاجتماعي ،التعرف على الشخصيات البارزة ،حماية المدارس من التهديدات ،تتبع الحضور في المدرسة ،تسهيل المعاملات الآمنة ..... و الكثير من الإستعمالات.
بالنسبة للتطبيقات،أولا سنقوم بتطبيق هذه التقنية على صورة ، ثم بعدها نقوم بتطبيقها على فيديو.
أول شيء نقوم باستدعاء مكتبة OpenCV .
بعدها ، نقوم بتعريف الصورة التي سنعمل عليها للسكريبت الخاص بنا عن طريق خاصية imread .
بعدها ، نعمل بوظيفة إسمها cascade classifier،و التي تمكننا من استخدام ملف اسمه haarcascade_frontalface_default(هذا الملف مدرب على التعرف على الوجوه)
بعدها ، نحدد الوجوه الموجودة في الصورة باستعمال الوظيفة detectMultiScale
بعدها ، نقوم بإنشاء حلقة لتطبيق كل ما بداخلها على كل وجه وجدناه من قبل، و نرسم مربع أخضر على كل وجه باستعمال وظيفة Rectangle الموجودة في مكتبة OpenCV .
و في الأخير نرى النتيجة باستعمال imshow .
(waitKey و destroyAllWindows نبرمج سكريبت على أن لا يغلق النتيجة حتى نضغط على رمز في لوحة المفاتيح )
بالنسبة لتطبيق هذه التقنية على فيديو، سنعمل تغييرات بسيطة على ما رأيناه من قبل.
أولا نقوم باستبدال خاصية imread بخاصية videocapture و ندخل إسم الفيديو الذي سنعمل عليه، أو نقوم بإدخال الرقم 0 لاستخدام الكاميرا الخاصة بجهازنا و تطبيق هذه التقنية على ما تلتقطه الكاميرا .
أول شيء نعمل حلقة غير منتهية ، لا تنتهي حتى تطبق ما بداخلها على كل Frame في الفيديو ، بما أن الفيديو هو مجموعة من الصور ، فَهنا كل Frame تمثل لنا صورة من تلك الصور،
بعد بتطبيق خاصية read على الفيديو الخاص بنا ، نحصل على متغيران ، واحد منهم هو ذلك Frame ، و نقوم بتطبيق كل ما طبقناه على صورة من قبل ، مع إزالة waitKey و destroyAllWindows لكي لا يتوقف البرنامج في كل Frame.
كود المشروع على GitHub 💻:
https://github.com/AyoubAllali1/Face-recognition-with-OpenCV-Python
