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

מכשיר מעקב פנים! פייתון וארדואינו: 5 שלבים
מכשיר מעקב פנים! פייתון וארדואינו: 5 שלבים

וִידֵאוֹ: מכשיר מעקב פנים! פייתון וארדואינו: 5 שלבים

וִידֵאוֹ: מכשיר מעקב פנים! פייתון וארדואינו: 5 שלבים
וִידֵאוֹ: CS50 2014 - Week 7 2024, נוֹבֶמבֶּר
Anonim
Image
Image
מכשיר מעקב פנים! פייתון וארדואינו
מכשיר מעקב פנים! פייתון וארדואינו
מכשיר מעקב פנים! פייתון וארדואינו
מכשיר מעקב פנים! פייתון וארדואינו

מאת Techovator0819 ערוץ היוטיוב שלי עקוב אחר מאת המחבר:

IoT: תיבת מזג אוויר (עם אזעקות וטיימרים מותאמים אישית)
IoT: תיבת מזג אוויר (עם אזעקות וטיימרים מותאמים אישית)
IoT: תיבת מזג אוויר (עם אזעקות וטיימרים מותאמים אישית)
IoT: תיבת מזג אוויר (עם אזעקות וטיימרים מותאמים אישית)
הרובוט האוטונומי הרב-תפקודי: 'נכס'
הרובוט האוטונומי הרב-תפקודי: 'נכס'
הרובוט האוטונומי הרב-תפקודי: 'נכס'
הרובוט האוטונומי הרב-תפקודי: 'נכס'

אודות: אני פשוט אוהב ליצור דברים חדשים. כמו דברים העוסקים במיקרו-בקרים, הנדסת מכונות, בינה מלאכותית, מדעי המחשב וכל מה שמעניין אותי. וכאן תוכלו למצוא את כל … עוד אודות Techovator0819 »

שלום לכולם בחוץ שקוראים את ההנחיה הזו. זהו מכשיר למעקב פנים שעובד על ספריית פייתון בשם OpenCV. קורות חיים מייצגים 'מחשב ראייה'. לאחר מכן הקמתי ממשק סדרתי בין המחשב האישי שלי לבין ה- UNO של Arduino. אז זה אומר שזה לא עובד רק על פייתון.

מכשיר זה מזהה את הפנים שלך במסגרת, ואז הוא שולח פקודות מסוימות לארדואינו כדי למקם את המצלמה בצורה כזו שהיא תישאר בתוך המסגרת! נשמע מגניב? בואו נקפוץ ישר לזה.

אספקה

1. ארדואינו UNO

2. 2 x מנועי סרוו (כל מנועי סרוו יהיו בסדר אבל השתמשתי ב- Tower Pro SG90)

3. התקנת פייתון

4. התקנת OpenCV

5. מצלמת אינטרנט

שלב 1: התקנת Python ו- OpenCV

התקנת פייתון די פשוטה קדימה!

www.python.org/downloads/

אתה יכול לעקוב אחר הקישור לעיל כדי להוריד את גרסת הפייתון (Mac, Windows או Linux) המתאימה לך ביותר (64 סיביות או 32 סיביות). שאר תהליך ההתקנה הוא פשוט ותנחה אותך על ידי הממשק.

לאחר שתסיים את ההתקנה, פתח את שורת הפקודה והקלד את הדברים הבאים:

pip התקן opencv-python

זה אמור להתקין את ספריית openCV. במקרה של פתרון בעיות, אתה יכול לבדוק את הדף הזה.

לאחר שהגדרנו את הסביבה ואת כל התנאים המוקדמים, בואו נראה כיצד נוכל לבנות זאת בפועל!

שלב 2: מהן תכונות דומות ל- Haar?

מאפיינים דמויי שיער הם תכונות של תמונה דיגיטלית. השם בא מגלגלי Haar. אלה הם משפחה של גלים בצורת ריבוע המשמשים לזהות תכונות בתמונה דיגיטלית. מפלי Haar הוא בעצם מסווג המסייע לנו לזהות אובייקטים (בפרצופים שלנו) באמצעות התכונות הדומות לה.

במקרה שלנו, לשם הפשטות, נשתמש במפגשי Haar שהוכשרו מראש לזיהוי פרצופים. תוכל לעקוב אחר הקישור הזה של דף github ולהוריד את קובץ ה- xml של מפל Haar.

1. לחץ על 'haarcascade_frontalface_alt.xml'

2. לחץ על הלחצן 'Raw' בחלק הימני העליון על חלון הקוד.

3. זה יכוון אותך לדף אחר עם טקסט בלבד.

4. לחץ לחיצה ימנית ולחץ על 'שמור בשם..'

5. שמור אותו באותה ספרייה או תיקיה של קוד הפייתון שאתה כותב עליו.

שלב 3: קידוד ב- Python

יבוא cv2

יבוא numpy כמו np זמן יבוא סדרתי

אנו מייבאים את כל הספריות הדרושות לנו.

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

אנו יוצרים אובייקט סדרתי בשם 'ard'. אנו גם מציינים את שם הנמל ואת BaudRate כפרמטרים.

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

אנו יוצרים אובייקט נוסף עבור מפל Haar שלנו. וודא שקובץ HaarCascade נשאר באותה תיקייה של תוכנית פיתון זו.

vid = cv2. VideoCapture (0)

אנו יוצרים אובייקט שמצלם וידאו ממצלמת האינטרנט. 0 כפרמטר פירושו מצלמת האינטרנט הראשונה המחוברת למחשב שלי.

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

בעוד שזה נכון:

_, frame = vid.read ()#קורא את המסגרת הנוכחית למסגרת המשתנה אפור = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#ממיר מסגרת -> תמונה בגווני אפור#השורה הבאה מזהה פנים. הפרמטר #הראשון הוא התמונה שעליה ברצונך לזהות ב- #minSize = () מציין את הגודל המינימלי של הפנים במונחים של פיקסלים = (80, 80), minNeighbors = 3) #A ללולאה לאיתור הפנים. עבור (x, y, w, h) בפנים: cv2. מלבן (מסגרת, (x, y), (x+w, y+h), (255, 0, 0), 2)#צייר מלבן מסביב הפנים Xpos = x+(w/2) #c מחשב את קואורדינטת ה- X של מרכז הפנים. Ypos = y+(h/2) #calcualtes ציר Y של מרכז הפנים אם Xpos> 280: #חסימות הקוד הבאות בודקות אם הפנים ard.write ('L'.encode ()) #on השמאלי, הימני, העליון או התחתון ביחס לזמן. שינה (0.01) #מרכז המסגרת. elif Xpos 280: ard.write ('D'.code ()) 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 אם (k == ord ('q')): #if 'q' נלחץ על המקלדת, הוא יוצא מלולאת ה- while. לשבור

cv2.destroyAllWindows () #סוגר את כל החלונות

ard.close () #סוגר את התקשורת הטורית

vid.release () #מפסיק לקבל וידאו מצלמת האינטרנט.

שלב 4: תכנות הארדואינו

אל תהסס לשנות את התוכנית בהתאם להתקנת החומרה שתתאים לצרכיך.

#לִכלוֹל

סרוו סרווקס;

סרוו סרוו;

int x = 90;

int y = 90;

הגדרת בטל () {

// שים את קוד ההתקנה שלך כאן, להפעלה פעם אחת: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); עיכוב (1000); }

char input = ""; // קלט טורי מאוחסן במשתנה זה

לולאת חלל () {

// שים את הקוד הראשי שלך כאן, כדי להריץ שוב ושוב: אם (Serial.available ()) {// בודק אם יש נתונים כלשהם בקלט המאגר הטורי = Serial.read (); // קורא את הנתונים למשתנה אם (input == 'U') {servoY.write (y+1); // מתאים את זווית הסרוו לפי הקלט y += 1; // מעדכן את ערך הזווית} else if (input == 'D') {servoY.write (y-1); y -= 1; } אחר {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } אחרת אם (קלט == 'R') {servoX.write (x+1); x += 1; } אחר {servoX.write (x); } input = ""; // מנקה את המשתנה} // התהליך חוזר על עצמו !!:)}

שלב 5: מסקנה

זוהי דרך אחת נחמדה ואינטראקטיבית שבה אתה יכול לעצב שילוב של מחשב ראייה בפרויקטים של Arduino. מחשב ראייה הוא למעשה די כיף. ואני באמת מקווה שאהבתם את זה. אם כן, הודע לי בתגובות. ובבקשה הירשם לערוץ היוטיוב שלי. תודה מראש <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

מוּמלָץ: