تعرف على كيفية تحديد الوجه والعيون باستخدام الذكاء الاصطناعي في بايثون

تحديد الوجه والعيون باستخدام مكتبة open cv في بايثون بواسطة الذكاء الاصطناعي

تحديد الوجه والعيون باستخدام مكتبة open cv في بايثون بواسطة الذكاء الاصطناعي

تعد مكتبة open cv من اكثر المكتبات التي تستخدم في معالجة الصور والتعرف عليها ومن خلال المقالات التي نشاركها معكم سوف نحاول تبسيط المكتبة وتقديم شروحات عديدة عليها لكي نبسط عليكم المكتبة وهذة المكتبة لا غنى عنها في التعامل مع الصور وهذة ليس اول مقالة في هذة المكتبة وسوف نتعمق معكم مقالة ثم الاخرى في شرح المكتبة لكي تفهمها بشكل بسيط وممتع .


يساعدك موقع جي كودرس في تعلم اي لغه برمجه تريدها وهذا عن طريق الامثله التي نضعها لكم فنحن في هذه الفتره نركز على لغه البايثون لانها من اكثر اللغات التي تطلب وكثير منا يبحث عنها مثل أمثلة يتدرب عليها بالبايثون لذلك قررنا في الفتره الاخيره وضع لكم الكثير من الامثله التي تستطيع التدرب عليها اريد منكم طلب بسيط جدا وهو عند الدخول الى اي مقاله حاول اولا التفكير في الحل قبل ان تبحث عن الاجابه وتقوم بنقلهم لان هذا الشيء لن يحسن من مستواك البرمجي يجب ان تحاول دائما في محاوله التفكير وكتابه الحل , لان هذا سوف يساعد خلايا عقلك في ايجاد حل لمشكله لانه في الايام المقبله قد تقع في مشاكل لا تجد لها حل على الانترنت ولكن بخبراتك تستطيع حلها بسهوله و ايضا لن تكون بالحاجه الى موقعنا او الى الامثله التي نقدمها لانك سوف تكون قادر على حل المشاكل بنفسك. 


ايضا يمكنك تحميل اكواد بايثون التي نضعها و وضعها في ملف pdf لتقوم بالتدرب عليها. او حتى وضع المقالات في المفضله والرجوع اليها وقت ما تريد. نحن نهدف الى تعلم البرمجه لجميع العرب وهذا لاننا بعد البحث والتعمق في البحث وجدنا ان المحتوى العربي يفتقر الى الامثله والشروحات في لغات البرمجه وكانت هذه من اهم الاسباب التي دفعتنا الى انشاء موقع جي كودرس وهو مساعدة جميع العرب في تعلم البرمجه وايضا امكانيه الشرح للاكواد وصور للاكواد وايضا نمشي معكم خطوه بخطوه في في الاكواد وذلك من اجل تحسين مستوى العرب في لغات البرمجه , ايضا ان يهتم موقعنا بكثير من اللغات ولا نختصر فقط على لغة python , نقوم بعمل مشاريع على الاندرويد ستوديو ونقوم بشرحها لكم وتنزيلها بشكل مجاني والتعديل عليها من خلال الشروحات البرمجية المقدمة والكثير الكثير في موقعنا. حاول دائما ان تشارك الموقع مع اصدقائك لان هذا يساعدنا على الاستمرار.


كيفية تحديد الوجة في الصور باستخدام الذكاء الاصطناعي في python

كيفية تحديد الوجة في الصور باستخدام الذكاء الاصطناعي في python

استكمالات لشرح مكتبة open-cv سوف نشرح لكم اليوم كيفية تحديد الوجة باستخدام بايثون وهذة من الشروحات المتقدمه في دروس البايثون ولا انصحك باستكمال هذة المقالة ان لم يكن لديك خلفية في استخدام cv2 ببايثون عموما سوف نقوم بتحديد موقع الاضافة الخاصة بالتعرف على الوجه من خلال السطر رقم 4 في الكود ونقوم بطباعته سوف يخرج لك مسار المكتبة في القرص الصلب ثم قم بجلب المسار الخاص به ومن ثم فتح ملف data وتحديد مجلد الخاص بتحديد الصورة والذي بصيغة xml بعدها نقوم بوضع صورة في imread وبعدها نقوم بتحويل الصورة من bgr الى gray .


بعد ذلك سوف نرسل الصورة في cassifire وبعدها نحدد ابعاد الصورة كامل باستخدام for ومنها نقوم بتحديد الجزء الاول في متغير والثاني في متغير s و e وبعدها نقوم برسم مربع حولهم عن طريق cv2 ايضا ومنها نقوم بتمرير الصورة والمتغيرات وبعدها لون الخط من خلال الثلاث ابعاد وبعده سمك الخط , بعد ذلك سوف نقوم بعمل resize للصورة لتقليل حجمها وبعدها نقوم بعرض الصورة في imshow لكي نراها على الصورة كما هو موضح بالصورة .


import cv2
import os

cv2_base = os.path.dirname(cv2.__file__)
target_file = os.path.join(cv2_base ,"data" , "haarcascade_frontalface_alt.xml")
face_calssifire = cv2.CascadeClassifier(target_file)

image = cv2.imread("one_face.jpg")
gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY )
result = face_calssifire.detectMultiScale(gray_image)
for x , y , w, h in result :
    s = (x , y)
    e = (x+w , y+h)
    cv2.rectangle(image , s , e , (255,0,0,), 2)

image2 = cv2.resize(image , dsize= ( 400 , 250))
cv2.imshow("test",image2)
cv2.waitKey(0)


كيفية تحديد الface من خلال camera الجهاز الخاص بك باستخدام python

كيفية تحديد الface من خلال camera الجهاز الخاص بك باستخدام python

هذا الكود هو نفس السابق تقريبا ولكن بدلا من ان نحصل على الصورة من خلال الملف نحصل عليها من خلال الكاميرا الخاصة بالجهاز الذي تعمل عليه ان كان لديك كاميرا بداخله تستطيع تحديد الاوجه من خلاله شاهد الكود التالي وهو نفس السابق ولكن سوف نتعامل هنا مع video الجهاز لكي تتعرف عليها الاداة .


import os
import cv2

cv2_base = os.path.dirname(cv2.__file__)
print(cv2_base )
# print file path lib cv2
target_file = os.path.join(cv2_base ,"data" , "haarcascade_frontalface_alt.xml")
# open cv2 -> open data file -> open haarcascade xml .
face_calssifire = cv2.CascadeClassifier(target_file)

fr=5
cam=cv2.VideoCapture(0)
while cam.isOpened() :
    vaild , image = cam.read()
    if vaild :
        gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY )
        face = face_calssifire.detectMultiScale(gray_image)

        for x , y , w , h in face :
            s1 = (x,y)
            s2 = (x+w , y+h)
    cv2.rectangle(image , s1 , s2 , (255,0,0) , 2)

    cv2.imshow("test" , image)
    key = cv2.waitKey(1000//fr)
    if key == ord('q') :
        break

print(face)
cam.release()
cv2.destroyAllWindows()


كيفية حفظ الصورة بعد تحديد الوجه في لغة بايثون

كيفية حفظ الصورة بعد تحديد الوجه في لغة بايثون

اذا كنت تريد تطوير برنامج او تطبيق يتعرف على الاوجه ويقوم بالتعرف على الشخص من خلال الاسم او تسجيل الدخول باستخدام الوجه سوف تحتاج الى ان تدرب النموذج الخاص بك لكي تستطيع من خلاله تنفيذ هذة العملية او حتى تريد تحديد الاوجه وحفظها على جهازك لتطوير model عليها او اي شيئ يخطر ببالك , فنحن نحاول ان نشرح لكم المكتبة بالتفصيل لكي تفهم كيف تعمل .


import os
import cv2

cv2_base = os.path.dirname(cv2.__file__)
print(cv2_base )
# print file path lib cv2
target_file = os.path.join(cv2_base ,"data" , "haarcascade_frontalface_alt.xml")
# open cv2 -> open data file -> open haarcascade xml .
face_calssifire = cv2.CascadeClassifier(target_file)

fr=5
cam=cv2.VideoCapture(0)
while cam.isOpened() :
    vaild , image = cam.read()
    if vaild :
        gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY )
        face = face_calssifire.detectMultiScale(gray_image)

        for x , y , w , h in face :
            s1 = (x,y)
            s2 = (x+w , y+h)
            cv2.rectangle(image , s1 , s2 , (255,0,0) , 2)
        cv2.imshow("test" , image)
        if len(face) >0 :  # Is there a face ?
            cv2.imwrite("las.png" , image) # yes ? save the face las.png
            break

    key = cv2.waitKey(1000//fr)
    if key == ord('q') :
        break

print(face)
cam.release()
cv2.destroyAllWindows()


كيفية تحديد الوجه والاعين من الصور باستخدام python

كيفية تحديد الوجه والاعين من الصور باستخدام python

في هذا الكود يعتبر نفس الاكواد السابقة ولكن نريد عمل اضافة عليه وهي ان نقوم بتحديد العيون من خلال الوجه , ببساطة سوف نبحث عن الملف الخاص بعرض الوجه والملف الخاص بعرض الeyes من خلال المسار وكل شيئ موجود في الكود وهو من السطر 3 و 2 بعدها نكمل الكود الخاص بنا كما تعلمنا ولكن لتحديد الاعين نحتاج الى القيمة x و y ان تكون global او ارمز لها باي متغير مختلف عن السابق وبعدها سوف نقوم بتمرير المتغيرات مثل ما قمنا بتمريرها الى الوجه لكي يظهر لنا الوجه والاعين من على الصورة .


cv2_base = os.path.dirname(cv2.__file__)
target_file = os.path.join(cv2_base ,"data" , "haarcascade_frontalface_alt.xml")
target_file_eye = os.path.join(cv2_base ,"data" , "haarcascade_eye.xml")

face_calssifire = cv2.CascadeClassifier(target_file)
eye_calssifire = cv2.CascadeClassifier(target_file_eye)

image = cv2.imread("one_face.jpg")
gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY )
result = face_calssifire.detectMultiScale(gray_image)
for x , y , w, h in result :
    s = (x , y)
    e = (x+w , y+h)
    cv2.rectangle(image , s , e , (255,0,0,), 2)

    face_image = gray_image[y: y+h , x:x+w]
    eyes = eye_calssifire.detectMultiScale(face_image)
    for x1 , y1 , w , h in eyes :
        global_x , global_y = (x+x1) , (y+y1)  
        a1 = (global_x , global_y)
        a2 = (global_x+w , global_y+h)
        cv2.rectangle(image , a1 , a2 ,(255,255,0) , 1)

cv2.imshow("test",image)
cv2.waitKey(0)


كيفية تحديد الface و eyes من خلال كاميرا جهازك بالذكاء الاصطناعي

كيفية تحديد الface و eyes من خلال كاميرا جهازك بالذكاء الاصطناعي

نفس الطريقة التي جربناها بالاعلى ولكن بدلا من ان ناخذ صورة من الجهاز سوف ناخذ صورة من الفيديو كاميرا الخاصة بالجهاز الخاص بنا , ويمكنك استخدام اي برامج من التي تعرض كاميرا الهاتف على الكمبيوتر وقم بعمل ip الخاص بها في متغير وقم بتمرير المتغير بدلا من تمرير صورة او الانتقال الى كاميرا الكمبيوتر , كل الطرق ممكنة بالنسبة لك والاكواد ليست صعبه اذا احسست انك معقد منها حاول قرائتها بشكل عميق وسوف تفهم , واذا لم تفهم اترك لنا تعليق وسنحاول مساعدتك .

import os
import cv2

cv2_base = os.path.dirname(cv2.__file__)
target_file = os.path.join(cv2_base ,"data" , "haarcascade_frontalface_alt.xml")
target_file_eye = os.path.join(cv2_base ,"data" , "haarcascade_eye.xml")

face_calssifire = cv2.CascadeClassifier(target_file)
eye_calssifire = cv2.CascadeClassifier(target_file_eye)

fr=5
cam=cv2.VideoCapture(0)
while cam.isOpened() :
    vaild , image = cam.read()
    if vaild :
        gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY )
        face = face_calssifire.detectMultiScale(gray_image)

        for x , y , w , h in face :
            s1 = (x,y)
            s2 = (x+w , y+h)
            cv2.rectangle(image , s1 , s2 , (255,0,0) , 2)

            face_image = gray_image[y: y+h , x:x+w]
            eyes = eye_calssifire.detectMultiScale(face_image)

            for x1 , y1 , w , h in eyes :
                global_x , global_y = (x+x1) , (y+y1)  
                a1 = (global_x , global_y)
                a2 = (global_x+w , global_y+h)
                cv2.rectangle(image , a1 , a2 ,(255,255,0) , 1)

    cv2.imshow("test" , image)
    key = cv2.waitKey(1000//fr)
    if key == ord('q') :
        break

cam.release()
cv2.destroyAllWindows()


كيفية قص الوجه من الصورة اكثر من مره وحفظه داخل الجهاز بألبايثون

كيفية قص الوجه من الصورة اكثر من مره وحفظه داخل الجهاز بألبايثون

هذا الكود النهائي في مقالة اليوم ويعد اكبر كود ببساطة سوف نستخدم فيه كل السابق وهذا يعد الكود الشامل للسابق ببساطة يقوم المستخدم بتشغيل الكاميرا الخاصة بجهازة ويقوم البرنامج بتحديد الوجه من الكاميرا وبعدها يقوم بقصها بالمقاص المطلوب ومن ثم يحفظها في المسار الذي قمنا بإنشاءه في اول الكود وحاولنا تكرار العملية 3 مرات يمكنك تغيرها و استخدام العدد الذي تريدة وبين كل صورة والاخرى ثانية , ببساطة لانها اذا قام الشخص المقابل للكاميرا بعمل اكثر من حركة للوجه يتعرف عليه البرنامج ويقوم بعد ذلك بحفظها في ملف يمكنك من خلال هذة البيانات جلب بيانات وعمل تطبيق عندما يتعرف على الوجه يعرف من هو هذا الشخص , نفس فكرة face detected في موقع وتطبيق فيسبوك .


import os
import sys
import cv2
import time

name=input("enter the name : ")
if not os.path.isdir("dataset") :
    os.makedirs("dataset")

target_folder= os.path.join("dataset" , name)
if not os.path.isdir(target_folder):
    os.makedirs(target_folder)

cv2_base_dir = os.path.dirname(cv2.__file__)
target_face = os.path.join(cv2_base_dir ,"data" , "haarcascade_frontalface_alt.xml")
face_classifire = cv2.CascadeClassifier(target_face)

image_name = r''

#open Camera
cam = cv2.VideoCapture(0)
if not cam.isOpened() :
    print("can't open camera")
    sys.exit(1)
count = 0
while cam.isOpened() :
    vaild , image = cam.read()
    if vaild :
        #cv2.imshow("",image)
        gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY)
        faces = face_classifire.detectMultiScale(gray_image)
        while count < 3 :
            for x , y , w ,h in faces:
                #cut face
                cut_face = image[y:y+h , x:x+w]
                # store face
                image_name =  target_folder + f'imge {count}.png'
                stored = cv2.imwrite(image_name , cut_face)
                print(image_name)
                print(stored)
                count = count + 1
                time.sleep(1)
               

cam.release()
cv2.destroyAllWindows()


تعليقات