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

تتبع الوجه باستخدام أردوينو: 7 خطوات
تتبع الوجه باستخدام أردوينو: 7 خطوات

فيديو: تتبع الوجه باستخدام أردوينو: 7 خطوات

فيديو: تتبع الوجه باستخدام أردوينو: 7 خطوات
فيديو: مشروع تخرج التعرف على الوجوه باستخدام raspberry pi 2024, يوليو
Anonim
تتبع الوجه باستخدام ArDUINO !!!
تتبع الوجه باستخدام ArDUINO !!!

في تعليمات سابقة ، شاركت كيف يمكنك التواصل بين Arduino و Python باستخدام وحدة 'pyserial' والتحكم في LED. إذا لم تكن قد شاهدته ، فتحقق من ذلك هنا: التواصل بين أردوينو وبايثون!

وكيف يمكنك اكتشاف لون كائن ما وتتبعه على الشاشة ، تحقق من ذلك هنا: اكتشاف اللون باستخدام OPENCV و PYTHON.

في هذا Instructable ، سأوضح لك كيفية تتبع الوجوه باستخدام Arduino & Python وجعل الكاميرا تتبع الوجه. قد يبدو هذا صعبًا ولكن ثق بي أنه ليس كذلك ، كل ما تحتاجه هو معرفة أساسية بـ Arduino و Python.

لذلك دعونا نبدأ…

الخطوة 1: الأشياء التي سوف تحتاجها:

الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها
الأشياء التي سوف تحتاجها

المتطلبات هي الحد الأدنى. لقد قدمت هنا قائمة جزئية لكل ما تحتاجه:

متطلبات الأجهزة:

  • Arduino UNO (أمازون الولايات المتحدة / أمازون الاتحاد الأوروبي)
  • كاميرا الويب (أمازون الولايات المتحدة / أمازون الاتحاد الأوروبي)
  • الماكينات × 2 (أمازون الولايات المتحدة / أمازون الاتحاد الأوروبي)
  • اللوح (أمازون الولايات المتحدة / أمازون الاتحاد الأوروبي)
  • مجموعة إمالة المقلاة المؤازرة (أمازون الولايات المتحدة / أمازون الاتحاد الأوروبي)

متطلبات البرمجيات:

  1. Python 2.7 (يجب تثبيته ، عادةً ما يكون نظام التشغيل Linux مثبتًا عليه مسبقًا)
  2. OpenCV (يمكنك تنزيله بشكل منفصل أو التثبيت باستخدام "تثبيت النقطة" شرح أكثر)
  3. pyserial (يمكن تركيبها بنقطة)
  4. حبيبي.
  5. هاركسكاد.

بعد تجميع كل شيء يمكننا الانتقال إلى خطوة التثبيت …

الخطوة الثانية: إعداد بيئة بايثون:

إعداد بيئة بايثون
إعداد بيئة بايثون
إعداد بيئة بايثون
إعداد بيئة بايثون
إعداد بيئة بايثون
إعداد بيئة بايثون

تثبيت بايثون:

لذلك نحتاج أولاً إلى Python 2.7 وتشغيله. للقيام بذلك ، قم أولاً بتنزيل وتثبيت python 2.7.14. للتحقق مما إذا كان قد تم تثبيته بشكل صحيح ، انتقل إلى: Windows Search >> اكتب "IDLE" >> اضغط على Enter. يجب أن تظهر قذيفة Python.

أو

في البحث ، اكتب CMD واضغط على enter لفتح موجه الأوامر. في نوع CMD >> python واضغط على enter ، يجب أن تظهر واجهة Python.

إذا رأيت خطأ في CMD ، فلا داعي للذعر ، فربما تحتاج إلى ضبط متغير البيئة. يمكنك متابعة هذا البرنامج التعليمي هنا لإعداد متغير البيئة.

تثبيت "pyserial" و "OpenCV" و "numpy" في Python:

لتثبيت هذه الوحدات ، سنستخدم تثبيت النقطة ،

أولاً افتح CMD واكتب الرموز التالية: -

نقطة تثبيت المسلسل

نقطة تثبيت opencv-python> تثبيت Pip numpy

ستقوم هذه الأوامر بتثبيت الوحدات النمطية اللازمة. الآن يمكننا الانتقال إلى جزء الترميز …

الخطوة الثالثة: نص بايثون:

نص بايثون
نص بايثون

قبل البدء في كتابة التعليمات البرمجية ، فإن أول شيء يجب فعله هو إنشاء مجلد جديد حيث يجب تخزين جميع التعليمات البرمجية في نفس المجلد. لذا قم بإنشاء مجلد جديد ، وقم بتسميته بأي شيء تريده. وقم بتنزيل "Haarcascade" من الأسفل والصقه في المجلد.

افتح المفكرة الآن واكتب النص الوارد أدناه ، واحفظه باسم "face.py" في نفس المجلد مثل haarcascade. (يمكنك تنزيل الكود الذي قدمته للملف أدناه):

# استيراد جميع الوحدات المطلوبة

استيراد numpy كـ np استيراد تسلسلي وقت الاستيراد استيراد sys استيراد cv2 #Setup Communication path for arduino (بدلاً من 'COM5' ضع المنفذ الذي يتصل به اردوينو الخاص بك) arduino = serial. Serial ('COM5'، 9600) time.sleep (2) print ("Connected to arduino…") # استيراد Haarcascade لاكتشاف الوجه face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # لالتقاط دفق الفيديو من كاميرا الويب. cap = cv2. VideoCapture (0) # اقرأ الصورة الملتقطة ، وقم بتحويلها إلى صورة رمادية وابحث عن الوجوه بينما 1: ret ، img = cap.read () cv2.resizeWindow ('img'، 500، 500) cv2.line (img ، (500 ، 250) ، (0 ، 250) ، (0 ، 255 ، 0) ، 1) cv2.line (img ، (250 ، 0) ، (250 ، 500) ، (0 ، 255 ، 0) ، 1) cv2.circle (img، (250، 250)، 5، (255، 255، 255)، -1) رمادي = cv2.cvtColor (img، cv2. COLOR_BGR2GRAY) وجوه = face_cascade.detectMultiScale (رمادي ، 1.3) # كشف الوجه وعمل مستطيل حوله. لـ (x، y، w، h) في الوجوه: cv2.rectangle (img، (x، y)، (x + w، y + h)، (0، 255، 0)، 5) roi_gray = رمادي [y: y + h، x: x + w] roi_color = img [y: y + h، x: x + w] arr = {y: y + h، x: x + w} print (arr) print ('X: '+ str (x)) طباعة (' Y: '+ str (y)) طباعة (' x + w: '+ str (x + w)) طباعة (' y + h: '+ str (y + h))) # مركز roi (مستطيل) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx، yy) # إرسال البيانات إلى طباعة arduino ("مركز المستطيل هو:" ، المركز) البيانات = "X {0: d} Y {1: d} Z".format (xx، yy) print ("output = '" + data + "" ") arduino.write (البيانات) # عرض الدفق. cv2.imshow ('img'، img) # اضغط على 'Esc' لإنهاء التنفيذ k = cv2.waitKey (30) & 0xff if k == 27: break

بمجرد الانتهاء من ذلك ، انتقل إلى كتابة كود اردوينو …

الخطوة 4: كود اردوينو:

كود اردوينو
كود اردوينو

بعد أن يصبح نص Python جاهزًا ، نحتاج إلى رسم اردوينو للتحكم في المؤازرة. ارجع إلى الكود أدناه ، والصقه في Arduino IDE واحفظه باسم 'servo.ino' في نفس المجلد مثل face.py و haarcascade. قم بتحميل الكود وانتقل إلى الخطوة التالية لإجراء الاتصالات.

(الملف القابل للتحميل أدناه)

#يشمل

مؤازرة // المؤازرة العمودية المؤازرة ؛ // Horizontal Servo int x؛ int ذ ؛ int prevX ؛ int prevY ؛ إعداد باطل () {Serial.begin (9600) ؛ servoVer.attach (5) ؛ // إرفاق مضاعفات رأسية إلى رقم 5 servoHor.attach (6) ؛ // إرفاق أجهزة أفقية بـ Pin 6 servoVer.write (90) ؛ servoHor.write (90) ؛ } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x، 600، 0، 70، 179)؛ مضاعفات int = خريطة (y ، 450 ، 0 ، 179 ، 95) ؛ servoX = min (servoX، 179) ؛ servoX = max (servoX، 70) ؛ المؤازرة = دقيقة (مؤازرة ، 179) ؛ المؤازرة = max (servoY، 95) ؛ servoHor.write (مؤازرة) ؛ servoVer.write (مؤازرة) ؛ }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt ()؛ إذا (Serial.read () == 'Y') {y = Serial.parseInt () ؛ نقاط البيع()؛ }} while (Serial.available ()> 0) {Serial.read ()؛ }}}

الخطوة 5: آلية عموم الميل: -

آلية عموم الإمالة
آلية عموم الإمالة
آلية عموم الإمالة
آلية عموم الإمالة

لقد استخدمت مجموعة متاحة بسهولة لـ Pan-Tilt. إذا كنت تريد ، يمكنك صنع واحدة بنفسك باستخدام الخشب / البلاستيك أو حتى الطباعة ثلاثية الأبعاد.

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

الخطوة السادسة: إجراء الاتصالات:

يصنع علاقات
يصنع علاقات
يصنع علاقات
يصنع علاقات

الدائرة بسيطة للغاية. فقط قم بإرفاق اثنين من الماكينات إلى اردوينو.

  1. عمودي على دبوس 5
  2. أفقي على دبوس 6
  3. القدرة على + 5V
  4. الأرض إلى GND

تحقق من مخطط الدائرة للرجوع اليها.

الخطوة 7: الاختبار:

  • بعد الانتهاء من كل شيء ، فإن آخر شيء يجب القيام به هو اختبار ما إذا كان يعمل. للاختبار أولاً ، تأكد من توصيل الماكينات بشكل صحيح بـ arduino وتحميل الرسم التخطيطي.
  • بعد تحميل المخطط ، تأكد من إغلاق IDE حتى يكون المنفذ مجانيًا للاتصال ببيثون.
  • افتح الآن face.py باستخدام Python IDLE واضغط على F5 لتشغيل الكود. سيستغرق الاتصال بـ arduino بضع ثوانٍ ومن ثم يجب أن تكون قادرًا على رؤية نافذة تقوم ببث كاميرا الويب. سيكتشف الرمز الآن وجهك وستتتبعه الماكينات.
  • يجب أن يتحرك المؤازر أثناء تحريك الكائن. الآن فقط قم بتوصيل الكاميرا بالمضاعفات بحيث تتحرك جنبًا إلى جنب مع الماكينات.

شكرا لك.

موصى به: