תוכן עניינים:

מעקב פנים באמצעות ARDUINO !!!: 7 שלבים
מעקב פנים באמצעות ARDUINO !!!: 7 שלבים

וִידֵאוֹ: מעקב פנים באמצעות ARDUINO !!!: 7 שלבים

וִידֵאוֹ: מעקב פנים באמצעות ARDUINO !!!: 7 שלבים
וִידֵאוֹ: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, נוֹבֶמבֶּר
Anonim
מעקב פנים באמצעות ARDUINO !!!
מעקב פנים באמצעות ARDUINO !!!

בהוראה קודמת שיתפתי כיצד ניתן לתקשר בין Arduino ו- Python באמצעות מודול 'pyserial' ולשלוט על LED. אם לא ראית את זה בדוק את זה כאן: תקשורת בין ארדואינו ופייתון!

וכיצד אתה יכול לזהות צבע של אובייקט ולעקוב אחריו על המסך, בדוק את זה כאן: זיהוי צבעים באמצעות OPENCV ו- PYTHON.

במדריך זה אני אראה לך כיצד לעקוב אחר פנים באמצעות Arduino & Python ולגרום למצלמה לעקוב אחר הפנים. זה אולי יישמע קשה אבל תאמין לי שזה לא, כל מה שאתה צריך זה ידע בסיסי בארדואינו ובפייתון.

אז בואו נתחיל…

שלב 1: דברים שתצטרך:

דברים שתצטרכו
דברים שתצטרכו
דברים שתצטרכו
דברים שתצטרכו
דברים שתצטרכו
דברים שתצטרכו

הדרישות הן מינימליות. כאן סיפקתי רשימה חלקית של כל מה שאתה צריך:

דרישת חומרה:

  • ארדואינו UNO (אמזון ארה"ב / אמזון האיחוד האירופי)
  • מצלמת אינטרנט (אמזון ארה"ב / אמזון האיחוד האירופי)
  • Servos x 2 (אמזון ארה"ב / אמזון האיחוד האירופי)
  • לוח לחם (אמזון ארה"ב / אמזון האיחוד האירופי)
  • ערכת הטיה פאן סרוו (אמזון ארה"ב / אמזון האיחוד האירופי)

דרישת תוכנה:

  1. Python 2.7 (צריך להתקין, מערכת ההפעלה Linux בדרך כלל מותקנת מראש)
  2. OpenCV (אתה יכול להוריד אותו בנפרד או להתקין באמצעות 'pip install' הסבר נוסף)
  3. פיסריאלי (ניתן להתקנה באמצעות פיפ)
  4. ערמומי.
  5. Haarcascade.

לאחר שנאסף כל דבר נוכל להמשיך לשלב ההתקנה …

שלב 2: הגדרת סביבת פייתון:

הגדרת סביבת פייתון
הגדרת סביבת פייתון
הגדרת סביבת פייתון
הגדרת סביבת פייתון
הגדרת סביבת פייתון
הגדרת סביבת פייתון

התקנת פייתון:

אז קודם כל אנחנו צריכים את פייתון 2.7 לפעול. לשם כך, הורד והתקן לראשונה את פייתון 2.7.14. כדי לבדוק אם הוא מותקן כראוי עבור אל: חיפוש Windows >> הקלד "סרק" >> הקש Enter. מעטפת פייתון אמורה לצוץ.

אוֹ

בחיפוש הקלד 'CMD' ולחץ על Enter כדי לפתוח את שורת הפקודה. בסוג CMD >> פייתון והקש enter, ממשק פייתון אמור להציג.

אם אתה רואה שגיאה ב- CMD, אל תיבהל כנראה שאתה צריך להגדיר משתנה סביבה. תוכל לעקוב אחר הדרכה זו כאן כדי להגדיר משתנה סביבתי.

התקנת 'pyserial', 'OpenCV' ו- 'numpy' בפייתון:

כדי להתקין מודולים אלה נשתמש ב- pip install, פתח תחילה את CMD והקלד את הקודים הבאים:-

pip להתקין סדרתי

pip להתקין opencv-python> pip להתקין numpy

פקודות אלה יתקינו את המודולים הדרושים. כעת נוכל לעבור לחלק הקידוד …

שלב 3: סקריפט פייתון:

סקריפט Python
סקריפט Python

לפני שמתחילים לכתוב קוד הדבר הראשון שצריך לעשות הוא ליצור תיקייה חדשה מכיוון שכל הקוד צריך להיות מאוחסן באותה תיקייה. אז צור תיקייה חדשה, תקרא לה כל מה שאתה רוצה. והורד את 'Haarcascade' מלמטה והדבק אותו בתיקייה.

כעת פתח את פנקס הרשימות וכתוב את הסקריפט שניתן להלן, שמור אותו כ- 'face.py' באותה תיקייה של haarcascade. (אתה יכול להוריד את הקוד שסיפקתי את הקובץ למטה):

#ייבא את כל המודולים הנדרשים

יבוא numpy as np יבוא זמן יבוא סדרתי יבוא sys יבוא cv2 #נתיב תקשורת עבור arduino (במקום 'COM5' שים את היציאה שאליה הארדואינו מחובר) arduino = serial. Serial ('COM5', 9600) time.sleep (2) הדפס ("מחובר לארדואינו …") #ייבוא הארקאסדה לזיהוי פנים 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} הדפס (arr) הדפס ('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 הדפסה (xx) הדפסה (yy) מרכז = (xx, yy) # שליחת נתונים להדפס ארדואינו ("מרכז המלבן הוא:", מרכז) נתונים = "X {0: d} Y {1: d} Z". פורמט (xx, yy) הדפסה ("output = '" +data + "'") arduino.write (data) #הצג את הזרם. cv2.imshow ('img', img) #Hit 'Esc' כדי לסיים את הביצוע k = cv2.waitKey (30) & 0xff אם k == 27: הפסקה

לאחר שתעשה זאת, המשך לכתוב את הקוד עבור arduino …

שלב 4: קוד ארדואינו:

קוד ארדואינו
קוד ארדואינו

לאחר שתסריט הפיתון מוכן אנו זקוקים לסקיצת ארדואינו כדי לשלוט בסרוו. עיין בקוד להלן, הדבק אותו ב- Arduino IDE ושמור אותו בשם 'servo.ino' באותה תיקייה של face.py ו- haarcascade. העלה את הקוד ועבור לשלב הבא ליצירת החיבורים.

(קובץ להורדה ניתן להלן)

#לִכלוֹל

Servo servoVer; // סרוו סרוו סרוו אנכי; // אופקי סרוו int x; int y; int prevX; int prevY; הגדרת void () {Serial.begin (9600); servoVer.attach (5); // צרף סרוו אנכי לפין 5 servoHor.attach (6); // צרף סרוו אופקי לפין 6 servoVer.write (90); servoHor.write (90); } חלל Pos () {if (prevX! = x || prevY! = y) {int servoX = מפה (x, 600, 0, 70, 179); int servoY = מפה (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = מקסימום (servoX, 70); servoY = min (servoY, 179); servoY = max (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} לולאת void () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}

שלב 5: מנגנון פאן הטיה:-

מנגנון פאן הטיה
מנגנון פאן הטיה
מנגנון פאן הטיה
מנגנון פאן הטיה

השתמשתי בערכה זמינה עבור Pan-Tilt. אם אתה רוצה אתה יכול להכין אחד בעצמך בעזרת עץ/פלסטיק או אפילו הדפס תלת מימד.

זה שהשתמשתי בו הוא די זול, וקל מאוד להרכבה. ובכל זאת, אם אתה רוצה הוראות כיצד לעשות זאת, תוכל למצוא אותן כאן.

שלב 6: יצירת חיבורים:

יצירת חיבורים
יצירת חיבורים
יצירת חיבורים
יצירת חיבורים

המעגל די פשוט. פשוט צרף שני סרוו לארדואינו.

  1. אנכי לסיכה 5
  2. אופקי לסיכה 6
  3. הספק ל- +5V
  4. הקרקע ל- GND

בדוק את תרשים המעגל לעיון.

שלב 7: בדיקה:

  • אחרי שהכל נעשה הדבר האחרון שצריך לעשות זה לבדוק אם זה עובד. כדי לבדוק תחילה וודא כי סרוו מחוברים כראוי לארדואינו והסקיצה מועלה.
  • לאחר העלאת הסקיצה הקפד לסגור את ה- IDE כך שהיציאה תהיה חופשית להתחבר לפייתון.
  • כעת פתח את 'face.py' עם Python IDLE ולחץ על 'F5' כדי להריץ את הקוד. זה ייקח כמה שניות להתחבר ל- arduino ואז אתה אמור להיות מסוגל לראות חלון שמזרים את מצלמת האינטרנט. כעת הקוד יזהה את פניך והשרווסים יעקבו אחר אותו.
  • סרוו צריך לנוע תוך כדי הזזת האובייקט. עכשיו רק חבר את המצלמה לסרוווס כך שהיא תנוע יחד עם סרוו.

תודה.

מוּמלָץ: