تعرف على كيفية عرض كاميرا الجهاز والتعرف على الوجوه ببايثون بواسطة face detection

كيفية عرض كاميرا الجهاز والتعامل مع الfaces ببايثون

كيفية عرض كاميرا الجهاز والتعامل مع الfaces ببايثون

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


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


الاسباب التي تجعلك متمكن من لغه بايثون اولا انك لن تكون قادر على تعلم oop وهي اختصار لكلمة (Object-oriented programming - OOP) وتعني برمجة الكائنات او البرمجة الشيئية بشكل جيد فهذه العمليه تحتاج منك الى تعلم لغه قويه مثل جوفت او سي بلس بلس او سي او غيرها من اللغات لان مرحله OOP او البرمجه الشيئيه في البايثون بسيطه جدا و قد تجعلك غير قادر على فهمها بصوره واضحه ولذلك اي شخص يتعلم Object-oriented programming - OOP يتجه الى اي لغه صعبه اخرى في البدايه لكي تتمكن من فهمها و بعدها يمكن الانتقال مره اخرى الى python , حيث ان اللغات القوية اذا فهمتها بشكل جيد تستطيع تعلم اي من اللغات الحديثه التي ظهرت في الاونه الاخيره بسهوله لان الامر سيساعدك في ان تستطيع استيعاب المعلومات التي سوف تاخذها .


كيفية فتح كاميرا الجهاز واخذ بيانات من خلالها ببايثون

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


كيفية فتح كاميرا الجهاز واخذ بيانات من خلالها ببايثون

بعد ذلك يمكنك عمل زر معين من الكيبورد عندما يتم اللنقر عليه يتم غلق الكاميرا وشاشة العرض وهنا قمنا بعمل زر q المسؤول عن هذة الوظيفة والذي يحصل عند النقر عليه يتم تدمير او غلق كل شيئ في الكود .


import cv2
import sys

cam_index = 0
frame = 10
cam = cv2.VideoCapture(cam_index)
if not cam.isOpened() :
    print(f"can't open cam at index {cam_index} ")
    sys.exit(1)

while cam.isOpened() :
    valid , image = cam.read()
    if valid :
        cv2.imshow("view" , image)
    key = cv2.waitKey(1000//frame)
    if key == ord ('q') :
        break

cam.release()
cv2.destroyAllWindows()


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

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

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


import cv2
import sys

cam_index = 0
frame = 5
cam_link = 'http://192.168.1.4:8080/video'
cam = cv2.VideoCapture(cam_index)

cam.set(cv2.CAP_PROP_FRAME_WIDTH , 800)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT , 400)
cam.set(cv2.CAP_PROP_FPS , 30)

if not cam.isOpened() :
    print(f"can't open cam at index {cam_index} ")
    sys.exit(1)

while cam.isOpened() :
    valid , image = cam.read()
    if valid :
        cv2.imshow("view" , image)
    key = cv2.waitKey(1000//frame)
    if key == ord ('q') :
        break

cam.release()
cv2.destroyAllWindows()


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

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

في الكود السابق قمنا بتحديد ابعاد للفيديو ولكن قد لا تصلح الطريقة مع البعض لذلك سوف نستخدم الامر resize ونقوم بتمرير الصورة بداخله وبعدها ندخل له الابعاد التي نريد عرض بها الصورة وهنا وضعناها 800 في 400 لذلك سوف تلاحظ ظهور الصورة بالابعاد التي قمت بإدخالها .


import cv2
import sys

cam_index = 0
frame = 5
cam_link = 'http://192.168.1.4:8080/video'
cam = cv2.VideoCapture(cam_index)

if not cam.isOpened() :
    print(f"can't open cam at index {cam_index} ")
    sys.exit(1)

while cam.isOpened() :
    valid , image = cam.read()
    if valid :
        image = cv2.resize(image , (800,400) )
        cv2.imshow("view" , image)
    key = cv2.waitKey(1000//frame)
    if key == ord ('q') :
        break

cam.release()
cv2.destroyAllWindows()


كيفية عرض فيديو من جهازك باستخدام ألبايثون

كيفية عرض فيديو من جهازك باستخدام ألبايثون

هذا الكود يعتبر نفس الاكواد السابقه التي قمناها لكم للتعامل مع عرض الصور والفيديوهات بكل بساطة اذا كان لديك ملف mp4 او ملف فيديو عموما فقم بوضع المسار الخاص به في متغير ومبعدها مرر هذا المتغير الى الكاميرا لكي يتم عرضه وحدد عدد الframes التي تريد العرض بها سواء 60 او 30 او اي عدد تريده .


import cv2
import sys

cam_index = 0
frame = 30
file_path = 'test.mp4'
cam = cv2.VideoCapture(file_path)

if not cam.isOpened() :
    print(f"can't open cam at index {cam_index} ")
    sys.exit(1)

while cam.isOpened() :
    valid , image = cam.read()
    if valid :
        cv2.imshow("view" , image)
    key = cv2.waitKey(1000//frame)
    if key == ord ('q') :
        break

cam.release()
cv2.destroyAllWindows()


معرفة عدد الاوجه في كاميرا الجهاز بمكتبة opencv بايثون

معرفة عدد الاوجه في كاميرا الجهاز بمكتبة opencv بايثون

في هذا الجزء سوف نصل معكم الى مستوى متقدم قليلا وهو اننا سوف نقوم بعرض عدد الاوجه في الصورة بكل بساطة سوف نكتب الامر cv2_base وهو الذي يظهر لنا مسار المكتبة وبعد فتحه ننتقل الى مجلد data ثم ناخذ الملف xml الذي يساعدنا في هذة العملية ونقوم بكتابتهم وبعدها نمرر هذا املف الى cassifire وناخذ الصورة من اكاميرا وضع في اعتبارك انك يجب ان تحول الصور الى gray لكي تتم العملية بنجاح وفي النهاية قم بعملية الطباعة وسوف تلاحظ ظهور list بها 4 قيم كل list تدل على وجود شخص واحد .


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=10
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)
        
        cv2.imshow("test" , image)
    key = cv2.waitKey(1000//fr)
    if key == ord('q') :
        break

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


كيفية معرفة عدد الاوجه من خلال الصور عن طريق بايثون


كيفية معرفة عدد الاوجه من خلال الصور عن طريق بايثون

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


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)
print(result)


كيفية معرفة عدد الاوجه في الصورة opencv

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


كيفية معرفة عدد الاوجه في الصورة opencv


لمزيد من المقالات في البايثون يمكنكم تصفح الموقع او تستطيع قراءة احد المقالات التالية .


tensorflow python erp python django mongodb python mongodb python host


تعليقات