v3.6.1¶
v3.6.1 היא גרסה גדולה. היא מציגה את מודול imu (LSM6DS3), חבילה של ממשקי getter חדשים ל-sensor עם סיבוב אוטומטי מונחה-IMU, תיקון פרספקטיבה בארבע נקודות rotation_corr(), ומפעילה את ה-Arduino Portenta H7 עם מצלמות ה-HIMAX HM01B0 וה-OV7690. כמה ממשקי sensor / image השתנו ו-TensorFlow הוסר ב-M7 — קראו את השינויים שוברי-התאימות שלהלן.
עיקרי הדברים¶
מודול
imu— מד תאוצה / ג’יירו / טמפרטורה / roll / pitch על ה-LSM6DS3 (OpenMV 4 / Portenta).Getters לחיישן + סיבוב אוטומטי —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation(), וסיבוב תמונת בזק (snapshot) מונחה-IMU.תיקון פרספקטיבה —
rotation_corr()מקבל כעת את מילות המפתחfovו-corners(ארבע נקודות).חומרה חדשה — Arduino Portenta H7, HIMAX HM01B0, ומצלמת OV7690.
שובר תאימות:
set_pixformat()/set_framesize()מחזירים כעתNone,sensor.set_framerate()הוסר, TensorFlow הוסר ב-M7, ו-lens_corr()/linpolar()דורשים כעת מימדים זוגיים — ראו את השינויים שוברי-התאימות.
תכונות חדשות¶
imu— מודול IMU חדש:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch(), ו-imu.sleep()(LSM6DS3 על OpenMV 4 / Portenta).Getters לחיישן — נוספו
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose(), ו-set_auto_rotation()/get_auto_rotation().סיבוב אוטומטי —
sensor.snapshot()משתמש ב-IMU כדי להפוך / לשקף / לבצע טרנספוזיציה של פריימים כאשר הסיבוב האוטומטי מופעל.rotation_corr()— נוספו מילות המפתחfovו-corners(פרספקטיבה בארבע נקודות), עם דוגמאות לתיקון פרספקטיבה.lcd.init()— נוסף מילת המפתחbgr.collections.deque— הופעל בבנייה של MicroPython.נוספו קבועי המזהים
sensor.OV7690ו-sensor.HM01B0ודוגמה למסנן תמונה בסגנון numpy עםulab.
שינויים ושיפורים נוספים¶
אופטימיזציה משמעותית למסנני התמונה (median / mode / mean / …) ול-
find_circles()ולתיקון העדשה;alloc_extra_fbיכול כעת להקצות כל מספר של בייטים; מודל זיהוי האנשים נבנה מחדש עם פעולת average-pool חדשה.
תיקוני באגים¶
מצלמה וחיישנים:
תוקנו
sleep()של OV2640 (משתמש כעת באוגר (register) ה-standby של COM2 במקום בפין ה-power-down), תצורת פין ה-FSYNC, הקטביות של HSYNC/VSYNC ב-HM01B0 וכתובת/סריקת ה-I2C, ה-GPIO ל-power-down של חיישן ה-Portenta ופין ה-reset של המצלמה, והושבת הסיבוב האוטומטי כאשר ה-pitch של ה-IMU קרוב ל-90°/270°.
עיבוד תמונה ומערכת:
תוקנו באג בבדיקת גבולות במסנן תמונה, hardfault בעת השבתת ה-D-cache, אתחול בלוחות ללא כרטיס SD, באג ב-
load_to_fbשלtf.load(), גלישת מחסנית בזיהוי אנשים (מחסנית ה-H7 הוגדלה ל-≥12 KB), והיסטי המתארים (descriptors) של USB עבור מצב high-speed ב-OpenMV 4 Plus.
חומרה ותמיכה בלוחות¶
Arduino Portenta H7 — הפעלת לוח ראשונית (תצורת clock/OSC/HSE של STM32H747, כותרות CMSIS, ADC, SDRAM, Arduino USB PID).
HIMAX HM01B0 — מנהל התקן חדש למצלמה מונוכרומטית (Bayer, שעון מתנד חיצוני).
OV7690 — מנהל התקן חדש למצלמה.
LSM6DS3 IMU — OpenMV 4 / Portenta.
שינויים שוברי-תאימות ב-API¶
שבירות API גלויות-למשתמש בין v3.6.0 ל-v3.6.1. היקף: מודולי C של Python ב-modules/ וספריות Python ב-scripts/libraries/.
כל שינוי מתויג לפי ההשפעה שלו:
minor — API צר; משפיע רק על סקריפטים שהשתמשו בו.
behavior — אותו API, תוצאות שונות; בדקו מחדש סקריפטים מכווננים.
השינויים מקובצים לפי השפעה בסדר זה. אם אתם רק רוצים לעדכן את הקוד שלכם, קפצו ל-רשימת מעבר בסוף. כל hash של commit מקושר ל-diff שלו ב-GitHub.
sensor.set_framerate() הוסר (minor)¶
ה-stub חסר-הפעולה sensor.set_framerate() הוסר; קריאה אליו מעלה כעת AttributeError. הסירו את הקריאה ושלטו בתזמון הפריימים באמצעות framesize/חשיפה במקום. (גרסה תקינה של set_framerate() הוחזרה ב-v4.0.2.)
Commits: 705e98f91
TensorFlow הוסר ב-OpenMV Cam M7 (minor)¶
TensorFlow (מודול ה-tf) הושבת ב-OpenMV Cam M7 / OpenMV 3 (הוא כבר לא נכנס). import tf ב-M7 נכשל — השתמשו במצלמה מסוג H7 עבור TensorFlow. (tf הופעל מחדש ב-F7 ב-v3.6.3.)
Commits: 2ae875077
set_pixformat() / set_framesize() מחזירים None (behavior)¶
sensor.set_pixformat() ו-sensor.set_framesize() מחזירים כעת None במקום True, ופורמט פיקסל לא נתמך מעלה כעת ValueError במקום assertion. קוד שבדק את הערך המוחזר (למשל if sensor.set_pixformat(...):) חייב להפסיק לעשות זאת, וקוד שתפס AssertionError עבור פורמטים לא נתמכים חייב לתפוס ValueError.
Commits: f314ac4e7
lens_corr() / linpolar() / logpolar() דורשים מימדים זוגיים (behavior)¶
image.lens_corr() ו-image.linpolar() / image.logpolar() דורשים כעת רוחב וגובה זוגיים של התמונה ומעלים שגיאה במימדים אי-זוגיים. חתכו או שנו את גודל התמונה למימדים זוגיים לפני קריאה לשיטות אלו.
רשימת מעבר¶
למעבר נקי ל-v3.6.1 העבודה הטיפוסית היא:
הסירו קריאות ל-
sensor.set_framerate()(הסרת set_framerate).העבירו עומסי עבודה של TensorFlow מה-OpenMV Cam M7 (שינוי TensorFlow ב-M7).
הפסיקו להסתמך על הערך המוחזר של
set_pixformat()/set_framesize()ותפסוValueErrorעבור פורמטי פיקסל לא נתמכים (שינוי הערך המוחזר).ודאו מימדי תמונה זוגיים לפני
lens_corr()/linpolar()/logpolar()(דרישת המימדים הזוגיים).
כל שאר הסקריפטים רצים ללא שינוי.