جدول المحتويات:

جهاز تتبع الوجه! Python & Arduino: 5 خطوات
جهاز تتبع الوجه! Python & Arduino: 5 خطوات

فيديو: جهاز تتبع الوجه! Python & Arduino: 5 خطوات

فيديو: جهاز تتبع الوجه! Python & Arduino: 5 خطوات
فيديو: Learn Computer Vision with CVZone in 2 Hours 2024, يوليو
Anonim
Image
Image
جهاز تتبع الوجه! بايثون واردوينو
جهاز تتبع الوجه! بايثون واردوينو
جهاز تتبع الوجه! بايثون واردوينو
جهاز تتبع الوجه! بايثون واردوينو

بواسطة Techovator0819 قناتي على اليوتيوب تابع المزيد من قبل المؤلف:

IoT: صندوق الطقس (مع منبهات ومؤقتات مخصصة)
IoT: صندوق الطقس (مع منبهات ومؤقتات مخصصة)
IoT: صندوق الطقس (مع منبهات ومؤقتات مخصصة)
IoT: صندوق الطقس (مع منبهات ومؤقتات مخصصة)
الروبوت الذاتي متعدد الوظائف: "الأصول"
الروبوت الذاتي متعدد الوظائف: "الأصول"
الروبوت الذاتي متعدد الوظائف: "الأصول"
الروبوت الذاتي متعدد الوظائف: "الأصول"

حول: أنا فقط أحب صنع أشياء جديدة. مثل الأشياء التي تتعامل مع وحدات التحكم الدقيقة والهندسة الميكانيكية والذكاء الاصطناعي وعلوم الكمبيوتر وأي شيء يثير اهتمامي على الإطلاق. وهنا ستجد كل … المزيد حول Techovator0819 »

مرحبًا بالجميع يقرؤون هذه التعليمات. هذا جهاز لتتبع الوجوه يعمل على مكتبة بيثون تسمى OpenCV. السيرة الذاتية تعني "رؤية الكمبيوتر". ثم قمت بإعداد واجهة تسلسلية بين جهاز الكمبيوتر الخاص بي و Arduino UNO. هذا يعني أن هذا لا يعمل فقط مع بايثون.

يتعرف هذا الجهاز على وجهك في الإطار ، ثم يرسل أوامر معينة إلى Arduino لوضع الكاميرا بطريقة تبقى داخل الإطار! يبدو جيدا؟ دعنا نقفز مباشرة في ذلك الحين.

اللوازم

1. Arduino UNO

2. 2 x Servo Motors (أي محركات مؤازرة ستكون جيدة لكنني استخدمت Tower Pro SG90)

3. تثبيت بايثون

4. تثبيت OpenCV

5. كاميرا الويب

الخطوة الأولى: تثبيت Python و OpenCV

تثبيت بايثون أمر سهل ومباشر!

www.python.org/downloads/

يمكنك اتباع الرابط أعلاه لتنزيل إصدار python (Mac أو windows أو Linux) الذي يناسبك (64 بت أو 32 بت). ما تبقى من عملية التثبيت بسيط وسوف يتم توجيهك من خلال الواجهة.

بمجرد الانتهاء من التثبيت ، افتح موجه الأوامر واكتب ما يلي:

نقطة تثبيت opencv-python

يجب أن يتم تثبيت مكتبة OpenCV. في حالة حدوث مشكلة ، يمكنك التحقق من هذه الصفحة.

بعد إعداد البيئة وجميع المتطلبات الأساسية ، دعنا نرى كيف يمكننا بالفعل بناء هذا!

الخطوة الثانية: ما هي الميزات الشبيهة بـ Haar؟

الميزات التي تشبه Haar هي ميزات الصورة الرقمية. الاسم يأتي من موجات هار. هذه عبارة عن عائلة من الموجات المربعة الشكل والتي تستخدم لتعريف السمات في صورة رقمية. Haar cascades هي عبارة عن مصنف يساعدنا في اكتشاف الكائنات (في وجوهنا) باستخدام ميزات تشبه haar.

في حالتنا ، من أجل التبسيط ، سنستخدم Haar Cascades المدربة مسبقًا لتحديد الوجوه. يمكنك اتباع هذا الرابط لصفحة جيثب وتنزيل ملف xml لـ Haar Cascade.

1. انقر فوق "haarcascade_frontalface_alt.xml"

2. انقر فوق الزر "Raw" في الجزء العلوي الأيمن من نافذة الكود.

3. سيوجهك إلى صفحة أخرى بها نص فقط.

4. انقر بزر الماوس الأيمن واضغط على "حفظ باسم.."

5. احفظه في نفس الدليل أو المجلد مثل كود Python الذي أنت بصدد كتابته.

الخطوة الثالثة: البرمجة بلغة بايثون

استيراد السيرة الذاتية 2

استيراد numpy كوقت استيراد تسلسلي استيراد np

نقوم باستيراد جميع المكتبات التي نحتاجها.

ard = serial. Serial ("COM3" ، 9600)

نقوم بإنشاء كائن تسلسلي يسمى "أرض". نحدد أيضًا اسم المنفذ و BaudRate كمعلمات.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

نقوم بإنشاء كائن آخر لشلالنا Haar Cascade. تأكد من بقاء ملف HaarCascade في نفس المجلد مثل برنامج python هذا.

vid = cv2. VideoCapture (0)

نقوم بإنشاء كائن يلتقط الفيديو من كاميرا الويب. 0 كمعامل يعني أول كاميرا ويب متصلة بجهاز الكمبيوتر الخاص بي.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

احيانا صحيح:

_، frame = vid.read () # يقرأ الإطار الحالي للإطار المتغير grey = cv2.cvtColor (frame، cv2. COLOR_BGR2GRAY) #converts frame -> صورة ذات تدرج رمادي # السطر التالي يكتشف الوجوه. #First المعلمة هي الصورة التي تريد الكشف عنها في # minSize = () تحدد الحد الأدنى لحجم الوجه من حيث البكسل # انقر فوق الرابط أعلاه لمعرفة المزيد عن Cascade Classification faces = face_cascade.detectMultiScale (رمادي ، minSize = (80، 80)، minNeighbours = 3) #A for loop لاكتشاف الوجوه. لـ (x ، y ، w ، h) في الوجوه: cv2.rectangle (frame، (x، y)، (x + w، y + h)، (255، 0، 0)، 2) # يرسم مستطيلًا حوله الوجه Xpos = x + (w / 2) # يحسب الاحداثى X لمركز الوجه. Ypos = y + (h / 2) #calcualtes الإحداثي Y لمركز الوجه إذا كان Xpos> 280: # تحقق كتل الكود التالية مما إذا كان الوجه هو ard.write ('L'.encode ()) # on اليسار أو اليمين أو أعلى أو أسفل بالنسبة للوقت. النوم (0.01) # مركز الإطار. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) else: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame '، frame) # يعرض الإطار في نافذة منفصلة. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #if 'q' مضغوط على لوحة المفاتيح ، فإنه يخرج من حلقة while. استراحة

cv2.destroyAllWindows () # يغلق كافة النوافذ

ard.close () #closes الاتصال التسلسلي

vid.release () #stops تلقي الفيديو من كاميرا الويب.

الخطوة 4: برمجة Arduino

لا تتردد في تعديل البرنامج وفقًا لإعدادات الأجهزة التي تناسب احتياجاتك.

#يشمل

أجهزة مؤازرة

أجهزة مؤازرة

كثافة العمليات س = 90 ؛

int y = 90 ؛

الإعداد باطل() {

// ضع رمز الإعداد هنا ، للتشغيل مرة واحدة: Serial.begin (9600) ؛ servoX.attach (9) ؛ servoY.attach (10) ؛ servoX.write (x) ؛ servoY.write (ص) ؛ تأخير (1000) ؛ }

إدخال شار = "" ؛ // يتم تخزين المدخلات التسلسلية في هذا المتغير

حلقة فارغة() {

// ضع الكود الرئيسي هنا ، للتشغيل بشكل متكرر: إذا (Serial.available ()) {// يتحقق مما إذا كانت أي بيانات موجودة في إدخال المخزن المؤقت التسلسلي = Serial.read () ؛ // يقرأ البيانات في متغير إذا (المدخلات == 'U') {servoY.write (y + 1) ؛ // يضبط زاوية المؤازرة وفقًا للإدخال y + = 1 ؛ // يقوم بتحديث قيمة الزاوية} else if (input == 'D') {servoY.write (y-1)؛ ص - = 1 ؛ } else {servoY.write (y) ؛ } if (input == 'L') {servoX.write (x-1) ؛ س - = 1 ؛ } else if (input == 'R') {servoX.write (x + 1) ؛ س + = 1 ؛ } else {servoX.write (x) ؛ } المدخلات = "" ؛ // يزيل المتغير} // تستمر العملية في التكرار !!:)}

الخطوة 5: الخاتمة

هذه طريقة لطيفة وتفاعلية يمكنك من خلالها تصميم دمج رؤية الكمبيوتر في مشاريع Arduino الخاصة بك. رؤية الكمبيوتر هي في الواقع ممتعة للغاية. وآمل حقًا أن تكون قد أحببت ذلك يا رفاق. إذا كانت الإجابة بنعم ، فأعلمني في التعليقات. ويرجى الاشتراك في قناة اليوتيوب الخاصة بي. شكرا مقدما <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

موصى به: