v1.2.0¶
v1.2.0 היא גרסה יסודית וגדולה מאוד שבונה את רוב ה-API הקלאסי של עיבוד התמונה של OpenMV: שיטות הציור, פעולות בינאריות / מורפולוגיה, מתארי נקודות מפתח (FAST / FREAK / LBP), המרות צבע ו-image.statistics, קלט/פלט קבצים של BMP / PPM / JPEG, המודולים lcd, mjpeg, gif ו-mlx התרמי, המצלמה OV7725, ובקרות sensor רבות. חלק מהתנהגות הליבה של sensor השתנתה — קראו את השינויים שוברי התאימות שלהלן.
עיקרים¶
API ציור —
draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints().בינארי / מורפולוגיה —
binary(),invert(),and/or/xor/...,erode()/dilate()/morph(),negate()/difference().נקודות מפתח — מתארי FAST / FREAK / LBP עם
match_descriptor()/save_descriptor()/load_descriptor().תמיכה במצלמה OV7725;
image.statistics; קלט/פלט קבצים של BMP/PPM/JPEG.שובר תאימות: התנהגות
sensor.reset(),sensor.snapshot()ו-sensor.set_pixformat()השתנתה — ראו את השינויים שוברי התאימות.
תכונות חדשות¶
ציור — נוספו
image.draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints()עם ארגומנטים בעלי מילת מפתח (color, thickness, …).בינארי / מורפולוגיה — נוספו
image.binary(),invert(),and()/nand()/or()/nor()/xor()/xnor(),erode()/dilate()/morph(),negate()/difference(),pixels(),centroid(),orientation_radians()/orientation_degrees(), וכןwidth()/height()/format().נקודות מפתח / מתארים — חילוץ נקודות מפתח של FAST באמצעות
find_keypoints(),match_descriptor()מאוחד וכןsave_descriptor()/load_descriptor()עבור FREAK / LBP, בתוספת מפל Haar/LBP לזיהוי פרופיל פנים.צבע / סטטיסטיקה —
image.statisticsופונקציות המרת צבע (rgb_to_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb).קלט/פלט קבצים — טעינה ושמירה של BMP / PPM (P2/P3/P5/P6) / JPEG (כולל JPEG בגווני אפור ודגימת כרומה במשנה 4:2:0 / 4:2:2).
מודולים — מודול
lcdחדש (מגן LCD),mjpeg(הקלטת וידאו),gifבצבע (עםGif.loop()), ומודולי המצלמה התרמיתmlx, כל אחד עם סקריפטים לדוגמה.חיישן — נוספו
sensor.get_id()(+ קבועי PID של OV9650/OV2640/OV7725),sensor.set_special_effect()(קבועי SDE_*),sensor.set_image_filter()(FILTER_BW / FILTER_SKIN), גודל הפרייםHQVGA, ו-image.set_pixel(x, y, …).WiFi — נוסף מנהל ההתקן של WiFi מסוג ATWINC1500 ותשתית BSP של OpenMV 1/2, בתוספת דוגמת BLE.
שינויים ושיפורים נוספים¶
חוצץ הפריימים מכווץ כעת ב-JPEG לפני הזרמה ל-OpenMV IDE (רוחב פס נמוך יותר); כיווץ ה-JPEG מתבצע במקום; זום אופקי/אנכי של OV7725 מאפשר קנה מידה שרירותי; זיהוי פנים משופר (מהיר יותר) של Haar הרץ ב-QVGA.
תיקוני באגים¶
עיבוד תמונה:
תוקנו חישוב התמונה האינטגרלית, השחתה במסנן
median(), חישוב המרכז (centroid), מסנני עור RGB / שחור-לבן על קלט RGB, וקריאה/כתיבה מהירה יותר של BMP/PPM בגווני אפור.
חיישן ומערכת:
תוקנו טיימרים של
pyb.Servo(Servo עובד כעת), רזולוציית HQVGA, אמינות אתחול כרטיס ה-SD, אתחול מחדש של האחסון לאחר איפוס רך, והרצה מחדש של REPL כאשר אין סקריפט.
תמיכה בחומרה ובלוחות¶
חיישן המצלמה OV7725.
מגן LCD (מודול
lcd), מצלמה תרמיתmlx, ותשתית WiFi מסוג ATWINC1500.
שינויי API שוברי תאימות¶
שינויי API גלויים למשתמש בין v1.1.0 ל-v1.2.0. היקף: מודולי C של Python ב-modules/ וספריות Python ב-scripts/libraries/.
כל שלושת השינויים שוברי התאימות הם שינויי התנהגות בפונקציות הליבה של sensor (אותו API, התנהגות שונה) — בדקו מחדש את הסקריפטים המושפעים. כל גיבוב קומיט מקושר ל-diff שלו ב-GitHub. (הרוב המכריע של גרסה זו הוא API חדש שנבנה בטווח v1.1→v1.2 ולכן מצטבר ואינו שובר תאימות.)
sensor.reset() כבר אינו מחיל תצורת ברירת מחדל (התנהגות)¶
sensor.reset() כבר אינו מחיל תצורת ברירת מחדל מובנית (pixformat / framesize / framerate / gain / contrast / brightness / saturation). סקריפטים שהסתמכו על כך ש-reset() משאיר ברירת מחדל שמישה חייבים כעת לקרוא במפורש ל-sensor.set_pixformat() ול-sensor.set_framesize() (וכל הגדרה אחרת) לאחר reset().
קומיטים: d1e782df3
sensor.snapshot() זורק שגיאה בעת timeout (התנהגות)¶
sensor.snapshot() זורק כעת RuntimeError("Sensor Timeout!!") כאשר תם הזמן הקצוב של החיישן במקום להיתקע ללא הגבלה. עטפו את snapshot() ב-try / except RuntimeError אם עליכם לסבול timeouts.
קומיטים: e3f41d674
sensor.set_pixformat() זורק שגיאה בפורמט לא נתמך (התנהגות)¶
sensor.set_pixformat() זורק כעת חריגה כשניתן לו פורמט פיקסל לא נתמך במקום להחזיר False. קוד שבדק את הערך המוחזר False חייב לתפוס את החריגה במקום.
קומיטים: e0c5822c2
רשימת בדיקה למעבר¶
למעבר נקי ל-v1.2.0 העבודה הטיפוסית היא:
הגדירו במפורש
sensor.set_pixformat()/sensor.set_framesize()לאחרsensor.reset()(שינוי ה-reset).עטפו את
sensor.snapshot()ב-try/except RuntimeErrorאם עליכם לסבול timeouts של החיישן (שינוי ה-snapshot).תפסו את החריגה מ-
sensor.set_pixformat()במקום לבדוקFalse(שינוי ה-set_pixformat).
כל שאר הסקריפטים רצים ללא שינוי.