v3.3.0¶
v3.3.0 היא גרסה ענקית. היא מוסיפה תמיכה מלאה במצלמה תרמית FLIR Lepton באמצעות ממשק sensor.ioctl() חדש ופלטות צבע, מודול פלט וידאו SPI בשם tv, מצב הפעלה מבוקר עם תריס גלובלי (global-shutter), אצווה גדולה של מתודות ציור/ניתוח חדשות ב-image (gamma_corr(), draw_ellipse(), draw_edges(), מאפייני blob רבים), וספריות ToF / מנועים / linalg חדשות. ממשק ה-cpufreq עוצב מחדש ו-sensor.set_framesize() כעת מעלה חריגה — קראו על השינויים שוברי התאימות שלהלן.
עיקרי הדברים¶
FLIR Lepton — תמיכה מלאה במצלמה תרמית באמצעות ממשק
sensor.ioctl()החדש, פלטות צבע, ו-image.to_rainbow().מודול
tv— פלט וידאו SPI TV / composite.מצב הפעלה מבוקר עם תריס גלובלי — לכידה מבוקרת ב-MT9V034 באמצעות
sensor.ioctl().עיבוד תמונה —
gamma_corr(),draw_ellipse(),draw_edges(), מיזוג אלפא ב-draw_image(), ומאפייני blob חדשים רבים.ספריות חדשות — מדידת מרחק VL53L1X ToF, מנהל ההתקן למנועים TB6612, micro-linalg.
שובר תאימות: ממשק ה-
cpufreqעוצב מחדש,sensor.set_framesize()כעת מעלה חריגה בכישלון,sensor.alloc_extra_fb()הסיר תמיכה ב-Bayer/JPEG, וארגומנטים מיקומיים שלimage.replace()הוסטו — ראו את השינויים שוברי התאימות.
תכונות חדשות¶
FLIR Lepton — נוסף
sensor.ioctl()לשליטה ייחודית לחיישן וסט מלא של ioctls עבור Lepton (רדיומטריה, רענון/רזולוציה, run-command, הגדרת/קריאת מאפיין, טמפרטורת FPA/AUX ב-°C, מצב/טווח מדידה, רוחב/גובה),sensor.set_color_palette()/sensor.get_color_palette()עםsensor.PALETTE_RAINBOW/PALETTE_IRONBOW,image.to_rainbow(), וסקריפטים לדוגמה של Lepton (27-Lepton).מצב מבוקר —
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODEללכידה מבוקרת עם תריס גלובלי ב-MT9V034, עם דוגמאות לקצב פריימים גבוה ולמצב מבוקר.מודול
tv— נוספו קישורי פלט וידאו SPI TV / composite.עיבוד תמונה — נוספו
image.gamma_corr(),image.draw_ellipse(),image.draw_edges(), מיזוג אלפא ב-draw_image(), מילת מפתחmask=ל-clear(), נוספו מחדשmask_rectangle()/mask_circle()/mask_ellipse(), מילות מפתח לסיבוב / hmirror / vflip ב-draw_string()/draw_text(), מילת מפתחtranspose(וכינוייםassign/set) ב-replace(),copy()x_scale/y_scaleבנוסף ל-crop()/scale(), בנאיImage()מתוך מימדים, פורמט הפיקסלsensor.BINARY, פונקציות המרת מרחבי צבע מיוצאות, ומאפייני blob חדשים רבים (corners,perimeter,roundness,elongation,extent,compactness,solidity,convexity,enclosing_circle,enclosed_ellipse, סיבוב).ספריות — נוספו מנהל ההתקן לחיישן מרחק
vl53l1xToF, מנהל ההתקן למנועיםtb6612(עם דוגמאות Motor-Shield למנוע DC ולמנוע צעד), וספריית micro-linalg (ulinalg/umatrix).שודרגה FatFS ל-FF13C (עם תמיכה ב-exFAT).
שינויים ושיפורים נוספים¶
שופרה איכות ה-JPEG כברירת מחדל (אמצע הטווח בין נמוך לגבוה במקום ערך קבוע מקודד); פעולות תמונה במקום (in-place) שוב אינן דורשות לחזור על התמונה כארגומנט הראשון;
draw_string()מקבל ערכי קנה מידה שאינם שלמים.
תיקוני באגים¶
מצלמה וחיישנים:
תוקנה תקיעת אתחול של Lepton 3.5 (timeout + שחזור) ואמינות איפוס,
set_framesize()לפניset_pixformat()ב-MT9V034 (סדר הקריאה כבר אינו משנה), WVGA של MT9V034 על ה-STM32H7, טווח החשיפה האוטומטית ועדכוני אוגרי הצללה של MT9V034, ובאג ה-ADC של ה-H7.
עיבוד תמונה:
תוקנו גישת זיכרון לא חוקית ב-
find_apriltags(),copy()בעת העתקת תמונה מוקטנת ל-frame buffer הראשי, הקצאת ה-frame buffer שלto_grayscale()/to_rgb565(), ה-len()של אובייקט keypoint, טיפול בגבולות MCU של JPEG, ניתוח רשימת הסף ב-binary(), ו-draw_keypoints()המקבל tuples של keypoint.
מערכת:
תוקנו דליפות חוסר איזון של mark/free ב-
fb_allocבמתודותimage/fir/lcd/tv/nn, נעשה כך ש-py_assertמשחרר זיכרון frame buffer בעת חריגות שנתפסו (#417), נוקה דגל ה-overrun (ORE) של ה-UART כך ש-overruns כבר אינם תוקעים קריאות UART, תוקן מטפל ה-IRQ של ה-RTC, ותוקן כלי ה-cascade_convert.pyב-Windows.
חומרה ותמיכה בלוחות¶
מצלמה תרמית FLIR Lepton.
TV shield — פלט וידאו SPI TV / composite.
תריס גלובלי (MT9V034) במצב מבוקר.
שינויי API שוברי תאימות¶
שבירות API גלויות למשתמש בין v3.2.0 ל-v3.3.0. היקף: מודולי C של Python ב-modules/ וספריות Python ב-scripts/libraries/.
כל שינוי מתויג לפי ההשפעה שלו:
major — משפיע על רוב הסקריפטים שהשתמשו בתכונה; תצטרכו להסב את הקוד.
minor — API צר; משפיע רק על סקריפטים שהשתמשו בו.
behavior — אותו API, תוצאות שונות; בדקו מחדש סקריפטים מכוונים.
השינויים מקובצים לפי השפעה בסדר זה. אם אתם רק רוצים להסב את הקוד שלכם, דלגו אל רשימת ההסבה בסוף. כל hash של commit מקושר ל-diff שלו ב-GitHub.
ממשק ה-cpufreq עוצב מחדש (major)¶
מודול ה-cpufreq עוצב מחדש לתמיכה ב-H7. הקבועים cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ ו-cpufreq.get_frequency() הוסרו. cpufreq.set_frequency() כעת מקבל מספר שלם פשוט של MHz (למשל cpufreq.set_frequency(120)), ונוספו cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies().
Commits: 6babf84a1
הארגומנטים המיקומיים של image.replace() הוסטו (minor)¶
image.replace() קיבל ארגומנט transpose, מה שהסיט את הארגומנט המיקומי mask מהמיקום הרביעי למיקום החמישי. קוד שהעביר את mask מיקומית (למשל img.replace(src, hmirror, vflip, mask)) חייב לעבור לצורת מילת המפתח img.replace(src, mask=mask).
Commits: dbe7bf059
sensor.alloc_extra_fb() כבר אינו מקבל Bayer/JPEG (minor)¶
sensor.alloc_extra_fb() כבר אינו מקבל sensor.BAYER או sensor.JPEG (הוא כעת תומך גם ב-sensor.BINARY). קוד שהקצה frame buffers נוספים בפורמט Bayer או JPEG חייב להשתמש ב-GRAYSCALE / RGB565 (או להקצות את ה-buffer בדרך אחרת).
Commits: f9e6b3fe0
sensor.set_framesize() מעלה חריגה בכישלון (behavior)¶
sensor.set_framesize() כעת מעלה ValueError כאשר גודל הפריים אינו נתמך במקום להחזיר False. קוד שבדק את ערך ההחזרה False חייב לתפוס במקום זאת את החריגה ValueError.
Commits: b0442633e
רשימת הסבה¶
להסבה נקייה ל-v3.3.0 העבודה הטיפוסית היא:
הסבו את קוד ה-
cpufreqל-set_frequency()של מספר שלם ב-MHz ול-get_current_frequencies()/get_supported_frequencies()(העיצוב מחדש של cpufreq).העבירו את
maskל-image.replace()כמילת מפתח (שינוי replace).הקצו frame buffers נוספים כ-
GRAYSCALE/RGB565במקום Bayer/JPEG (שינוי alloc_extra_fb).תפסו
ValueErrorסביבsensor.set_framesize()במקום לבדוק אם הוחזרFalse(שינוי set_framesize).
כל שאר הסקריפטים רצים ללא שינוי.