1. התחלה מהירה¶
ברוכים הבאים – אנו נרגשים להציג בפניכם את ה-OpenMV Cam, מצלמה קטנה וניתנת לתכנות שמריצה Python ישירות על ההתקן. כתבו כמה שורות קוד, לחצו על הפעלה, והמצלמה מתחילה לראות: מזהה פנים, עוקבת אחר צבעים, קוראת תגיות, עוקבת אחר קווים – ללא מחשב בלולאה וללא התקנה כבדה להתמודד איתה תחילה.
מדריך ההתחלה המהירה הזה יביא אתכם למצב פעיל תוך כמה דקות: תתקינו את ה-IDE, תחברו את המצלמה, ותריצו מזהה פנים חי כסקריפט הראשון שלכם.
1.1. התקינו את OpenMV IDE¶
OpenMV IDE היא יישום שולחן העבודה לכתיבת סקריפטים, הרצתם על המצלמה, וצפייה בתוצאות בזמן אמת. הורידו אותה ל-Windows, macOS או Linux כאן, ואז התקינו אותה:
Windows – הריצו את תוכנית ההתקנה. היא מתקינה את ה-IDE יחד עם מנהלי ההתקן של USB של המצלמה; עקבו אחר ההנחיות שכברירת מחדל.
macOS – פתחו את ה-
.dmgוגררו את OpenMV IDE אל תיקיית Applications.Linux – הריצו
chmod +x openmv-ide-*.run && ./openmv-ide-*.run, ואז עקבו אחר הנחיות תוכנית ההתקנה.
הערה
להתקנות אוטומטיות או ללא ראש (headless), תוכניות ההתקנה רצות גם משורת הפקודה עם דגלי התקנה שקטה. ראו את ה-openmv-ide README לפקודות המדויקות לכל פלטפורמה.
1.2. חברו את המצלמה¶
חברו את המצלמה למחשב שלכם באמצעות כבל נתונים USB. המתינו עד שהכונן שלה יעלה וה-LED הכחול יתחיל להבהב, ואז לחצו על כפתור החיבור – סמל התקע בתחתית סרגל הכלים.
בפעם הראשונה שאתם מתחברים, ה-IDE משווה את הקושחה של המצלמה אל הגרסה שאיתה היא נשלחת ומציעה לעדכן אותה. אשרו את ההנחיה כדי לצרוב את הקושחה העדכנית; זה לוקח כמה שניות, וה-IDE מתחבר מחדש בעצמו כשהוא מסיים.
אם המצלמה אינה מופיעה, או שאתם רוצים את הפרטים של מה שהחיבור והעדכון עושים, ראו חיבור מצלמה ו-עדכוני קושחה ושחזור.
הערה
תקועים על משהו? פרסמו ב-פורומים של OpenMV – הקהילה וצוות OpenMV ישמחו לעזור.
1.3. הריצו את הסקריפט הראשון שלכם¶
ה-OpenMV Cam שלכם נשלח עם מזהה הפנים BlazeFace של MediaPipe מבית Google על זיכרון הפלאש (flash). הדביקו סקריפט זה בעורך:
import csi
import time
import ml
from ml.postprocessing.mediapipe import BlazeFace
# Set up the camera sensor.
csi0 = csi.CSI()
csi0.reset() # Initialize the sensor to a known state.
csi0.pixformat(csi.RGB565) # Capture 16-bit colour.
csi0.framesize(csi.QVGA) # Set a small, fast frame size.
# BlazeFace was trained on square images, so crop to a centred
# square the size of the sensor's height.
side = csi0.height()
csi0.window((side, side))
# Load the built-in face detector. The post-processor turns the
# network's raw output into a list of detections; threshold sets how
# confident a detection must be to count.
model = ml.Model("/rom/blazeface_front_128.tflite",
postprocess=BlazeFace(threshold=0.4))
clock = time.clock() # For measuring the frame rate.
while True:
clock.tick()
img = csi0.snapshot() # Capture one frame.
# predict() runs the network and returns one
# ((x, y, w, h), score, keypoints) tuple per detected face.
for rect, score, keypoints in model.predict([img]):
# Draw the box around the face...
ml.utils.draw_predictions(img, [rect], ("face",),
((0, 0, 255),), format=None)
# ...and mark the six landmarks: eyes, nose, mouth, ears.
ml.utils.draw_keypoints(img, keypoints, color=(255, 0, 0))
print(clock.fps(), "fps")
לחצו על כפתור Run הירוק וכוונו את המצלמה אל פנים. מציג חוצץ הפריימים (frame buffer) מצייר תיבה סביב כל פרצוף ומסמן את העיניים, האף, הפה והאוזניים, בעוד שטרמינל הטורי מדפיס את קצב הפריימים.
סקריפט זה – ואחד עבור כמעט כל תכונה שיש למצלמה – מובנה גם בתוך ה-IDE תחת File → Examples, מסונן ללוח המחובר שלכם. פתחו אחד, לחצו על הפעלה, והתחילו לחקור מה המצלמה יכולה לעשות.
1.4. לאן ללכת בהמשך¶
היכן שתקפצו פנימה תלוי במה שאתם כבר יודעים. למדריך יש שלוש נקודות התחלה – חדשים ב-Python, חדשים בחומרה, או מוכנים לראייה ממוחשבת – אז בחרו את זו שמתאימה לכם. המקורות ומדריך ה-IDE כאן בכל פעם שתזדקקו להם.