v4.5.3

v4.5.3 היא גרסה גדולה: מיקוד אוטומטי של OV5640, ציור קווים בהחלקת קצוות (anti-aliasing), מפענח JPEG חומרתי שעבר למיינליין, שיפורי יכולת משמעותיים ל-i.MX RT (RT1060) ומערך רחב של תיקונים למצלמה/ל-ISP. כמה שיטות תמונה שנעשה בהן שימוש נדיר הוסרו וכמה ממשקי ISP/תצוגה השתנו — קראו את השינויים שוברי התאימות שלהלן.

עיקרי הדברים

  • מיקוד אוטומטי של OV5640 — מאופשר ב-OpenMV 4 / 4 Plus / RT1060 (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), עם דוגמה.

  • draw_line() עם החלקת קצוות (anti-aliasing) ומפענח JPEG חומרתי של STM32 שעבר למיינליין (פענוח JPEG מהיר יותר).

  • OpenMV RT1060 קיבל את ulab, פעולות ISP, set_framerate() / set_frame_callback(), חוצץ פריימים (frame buffer) גדול בהרבה ואת מנהל ההתקן של CAN.

  • שובר תאימות: Image.div() / cartoon() / mul() הוסרו וכמה ממשקי ISP/תצוגה השתנו — ראו את השינויים שוברי התאימות.

תכונות חדשות

  • מיקוד אוטומטי של OV5640 — קושחת המיקוד האוטומטי מאופשרת ב-OPENMV4, ב-OPENMV4P וב-OPENMV RT1060; הפעילו אותה באמצעות sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). נוספה דוגמה חדשה 07-Sensor-Control/autofocus.py.

  • ציור קווים בהחלקת קצוותdraw_line() קיבל החלקת קצוות (anti-aliasing).

  • בקרי תצוגת SPI מותאמים אישיתSPIDisplay מקבל כעת מילת מפתח controller= וחושף וו bus_write לרצפי אתחול/פקודות מותאמים אישית.

  • שדרוג Image.ccm() — מקבל כעת מטריצות מקוננות 3x3 / 4x3 / 3x4 / 4x4 ומערכי ulab (עם שורת היסט אופציונלית לכל ערוץ); נוספה דוגמה לתיקון צבע.

  • לכידת JPEG ב-i.MX RT — לכידת sensor.JPEG ב-Arduino Portenta/Nicla Vision/Giga, וכן set_framerate() ו-set_frame_callback() בפורט של mimxrt.

  • אימות מודל TFLite — מודלים נושאים כעת גיבוב (hash) של סדר האופרטורים וגודל קבוצת האופרטורים.

  • WiFi — נוספו קבועי מצב אבטחה של CYW43; סקריפטי דוגמה חדשים לבקרת לוח ב-i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).

שינויים ושיפורים נוספים

  • MicroPython עודכן ל-1.22; CMSIS עודכן ל-5.9.0.

  • מפענח JPEG חומרתי של STM32 שעבר למיינליין — פענוח JPEG מהיר יותר בקודק שעל השבב.

  • אופטימיזציה של Image.invert() / negate() ופעולות תמונה בינאריות/מתמטיות (intrinsics של CMSIS).

  • הספריות rpc ו-vl53l1x הפכו לניידות (שימוש ב-machine / time במקום ב-pyb), כך שהן רצות בפורטים שאינם STM32.

  • memcpy של חוצץ פריימים (frame buffer) בהאצת DMA ב-OpenMV H7 / H7 Plus / Pro / Pure Thermal וב-Arduino Giga / Nicla Vision / Portenta H7; STM32 סורק כעת התקני I2C פעם אחת בכל סריקה לאתחול מהיר יותר.

תיקוני באגים

מצלמה וחיישנים:

  • תוקן XCLK של מצלמת STM32 למחזור פעולה (duty cycle) אמיתי של 50% וכן באג כאשר תדר שעון המצלמה מוגדר לאפס; תוקנו חיתוך+שחלוף (transpose) של Bayer, הסטת צבע של YUV422 ו-set_windowing() בפורט של mimxrt.

  • תוקנו בדיקת מזהה השבב (chip-ID) של GC2145 וכן hmirror/vflip בהרכבות מסובבות; תוקנו PAJ6100 ב-RT1062 וגלישת חוצץ SPI של PixArt PAJ7620/PAW3902.

עיבוד תמונה:

  • תוקנו חיתוך ה-roi של find_rects(), קיטום היסט שברי ב-morph(), ברירות המחדל של ניגודיות/בהירות ב-image.gamma(), היסטי A/B של get_threshold() ב-RGB565 ופענוח JPEG של מימדים שאינם כפולה של 8.

מערכת וספריות:

  • machine.LED.value() ללא ארגומנט מחזיר כעת את מצב ה-LED במקום לאפס אותו; תוקנו ביטול האתחול (deinit) של SPI SSEL באפיק משותף, machine.deepsleep() ב-RT1062, קריסת TF באופרטורים חסרים והפעלה אוטומטית של כרטיס הרשת WINC1500/ninaw10 בעת connect().

תמיכת חומרה ולוחות

  • OpenMV RT1060 — אופשרו ulab ופעולות ISP, חוצץ פריימים (frame buffer) גדול יותר (10M→20M) / fb_alloc (2M→11M), מנהל ההתקן של CAN שוחזר, ערמה (heap) גדולה יותר.

  • Arduino GIGA — תמיכה במצלמת GC2145, עם זיהוי אוטומטי של GC2145/OV5640 (הם חולקים כתובת I2C).

  • i.MX RT — תמיכה בלכידת sensor.JPEG.

שינויי ממשק שוברי תאימות

שבירות ממשק הגלויות למשתמש בין v4.5.2 ל-v4.5.3. היקף: מודולי C של Python ב-modules/ וספריות Python ב-scripts/libraries/.

כל שינוי מתויג לפי השפעתו:

  • minor — ממשק צר; משפיע רק על סקריפטים שהשתמשו בו.

  • behavior — אותו ממשק, תוצאות שונות; בדקו מחדש סקריפטים מכוונים.

השינויים מקובצים לפי השפעה בסדר זה. אם אתם רק רוצים להעביר את הקוד שלכם, דלגו אל רשימת המעבר שבסוף. כל גיבוב (hash) של קומיט מקושר לדיף שלו ב-GitHub.

שיטות תמונה שהוסרו (minor)

Image.div(), Image.cartoon() (והדוגמה שלה) ו-Image.mul() הוסרו.

קומיטים: 7c932602e, 055a468b8, 4fe7fb63b

ממשק מודול התצוגה (minor)

החלופה (fallback) הישנה לשם המודול udisplay הוסרה — המודול רשום רק כ-display. השיטות dsi_write() / dsi_read() הייעודיות ל-DSI הוחלפו ב-bus_write() / bus_read(), הזמינות כעת בכל בקרי התצוגה.

קומיטים: 7df6694c3, 7d1f378a0

שינויי ממשק של MQTT ו-tf.regression (minor)

ה-MQTTClient של הספרייה mqtt עוצב מחדש: port נדרש כעת, נוספו מילות מפתח חדשות לבנאי ssl_params / callback וארגומנט timeout ב-connect(), ברירות המחדל הישנות ssl= / port=0 הוסרו, ו-check_msg() אינו חוסם כעת. tf.regression() נכתב מחדש — חתימתו היא כעת regression(model, array) והוא מטפל במודלים חד-ממדיים/דו-ממדיים/תלת-ממדיים ובמודלים מקוונטים (int8).

קומיטים: d12874c63, c5ec576c1

שינויי התנהגות של ISP / חיישן (behavior)

Image.awb() עוצב מחדש — gray-world (ברירת מחדל) לעומת white-patch (max=True) הוא כעת מפורש, והארגומנט max יחד עם הארגומנטים gamma / contrast / brightness של Image.gamma() הם כעת מילות מפתח בלבד (יש לעדכן קריאות מיקומיות). שחלוף (transpose) של תמונה מושבת כעת עבור YUV422 (קודם לכן הוא הפיק פלט שגוי) והסטת הצבע של YUV422 תוקנה כך שתתאים ל-Bayer. נתיב ה-JPEG של STM32 מעלה כעת שגיאה במקרה של אי-התאמה גאומטרית של JPEG במקום להפיק תמונה משובשת, ומצב נקודת גישה (AP) של WiFi מחיל כעת מצב אבטחה כברירת מחדל בפורטים של STM32 ו-i.MX RT.

קומיטים: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af

רשימת מעבר

למעבר נקי ל-v4.5.3 העבודה הטיפוסית היא:

  1. הפסיקו להשתמש ב-Image.div() / cartoon() / mul() (השיטות שהוסרו).

  2. ייבאו את מודול התצוגה כ-display והחליפו את dsi_write/ dsi_read ב-bus_write/bus_read (שינוי ממשק התצוגה).

  3. עדכנו את בניית ה-MQTTClient (port נדרש; ssl_params/callback) וכל קריאה ל-tf.regression() (שינויי ממשק הספרייה).

  4. העבירו את awb() max ואת gamma() gamma/contrast/ brightness כארגומנטים של מילות מפתח, ובדקו מחדש הנחות לגבי YUV422/שחלוף (transpose) ואבטחת מצב AP (שינויי ה-ISP/חיישן).