v3.7.0

A v3.7.0 egy nagy kiadás. Hozzáadja az audio modult (Portenta H7 PDM mikrofon) egy új, nem blokkoló visszahívás API-val, a micro_speech TensorFlow beszédfelismerő modult, egy vadonatúj párhuzamos RGB LCD vezérlőt (HDMI kimenettel és FT5X06 érintéssel), egy image.flush() metódust képpontformátum-konstansokkal, és egy újraírt image.draw_image() skálázási folyamatot. Több régi segédkönyvtár és képmetódus eltávolításra került, és a yuv_to_* matematika megváltozott — olvasd el a megszakító változásokat alább.

Kiemelések

  • audio modul — Portenta H7 fedélzeti PDM mikrofon rögzítés egy nem blokkoló start_streaming(callback) API-val.

  • micro_speech — egy TensorFlow micro-speech felismerő modul.

  • Új LCD vezérlő — párhuzamos RGB kijelző támogatás, HDMI kimenet (TFP410) és FT5X06 érintés.

  • image.draw_image() — újraírva egy teljes skálázási/alfa/paletta folyamattal (x_scale / y_scale / hint / color_palette …).

  • image.flush() plusz képpontformátum-konstansok (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG).

  • Megszakító: a régi matematikai segédkönyvtárak és több képmetódus eltávolításra került, a draw_image() / LCD API-k átdolgozásra kerültek, és a yuv_to_* többé nem von ki 128-at — lásd a megszakító változásokat.

Új funkciók

  • audio — egy új Portenta H7 audio modul a PDM-mikrofon rögzítéséhez: audio.init(), nem blokkoló audio.start_streaming(callback) és audio.stop_streaming() (a frekvencia Hz-ben van megadva).

  • micro_speech — egy új modul egy MicroSpeech osztállyal, audio_callback() és micro_speech() függvényekkel a TensorFlow beszédfelismeréshez; a listen() egy futóablakos átlagot használ, és elfogad egy filter kulcsszót, amely az eredményeket egy címkelistára korlátozza.

  • LCD — egy új LCD vezérlő párhuzamos RGB kijelző támogatással, LCD_NONE / LCD_SHIELD / LCD_DISPLAY típusokkal, számos képkocka-méret konstanssal, triple_buffer / framesize / refresh / bgr / deinit opciókkal, egy kibővített display modullal, HDMI kimenettel a TFP410-en keresztül, és FT5X06 érintőképernyő-támogatással.

  • image.flush() — hozzáadva egy image.flush() metódus és képpontformátum-konstansok (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG).

  • image.draw_image() — újraírva egy új skálázási folyamattal: x_scale / y_scale / x_size / y_size, rgb_channel, alpha, color_palette, alpha_palette és hint, plusz image.AREA / BILINEAR / BICUBIC / CENTER / EXTRACT_RGB_CHANNEL_FIRST / APPLY_COLOR_PALETTE_FIRST konstansokkal, valamint új alfa-keverési / színtábla / skálázási példákkal.

  • Az ImageReader.next_frame() kapott egy pause kulcsszót a valós idejű lejátszási késleltetés letiltásához.

  • Hozzáadva Portenta audio példák (audio_fft.py, micro_speech.py) és egy ExtInt stop-állapotból ébresztő példa.

Egyéb változások és fejlesztések

  • A beépített példák átszervezésre kerültek a scripts/examples/Arduino/ alá; a képkocka-puffer mostantól azonnal frissül a képek copy_to_fb=True paraméterrel való betöltése/létrehozása után (nincs szükség kézi flush-ra); a Portenta heap kissé csökkent, hogy több statikus illesztőprogram-állapot férjen el.

Hibajavítások

Kamera és képalkotás:

  • Javítva a felcserélt piros/kék (RGB565 bájtsorrend) a rögzített képeken, a DMA2D rajz kerekítése, hogy megegyezzen a többi rajzkóddal, a fb_alloc sérülés a rekurzív allokációkban (find_blobs()), és a top_hat() / black_hat() mostantól csak akkor érhető el, ha mind a bináris, mind a matematikai műveletek engedélyezve vannak.

Kijelző és audio:

  • Javítva az LCD shield kimenet és a Portenta 1 csatornás mono audio mód.

Portenta:

  • Megkerülve egy Ethernet/SDRAM probléma (az rst_eth magasra állítása) és javítva az SDRAM időzítési konfigurációja.

Hardver- és kártyatámogatás

  • Arduino Portenta H7 — fedélzeti PDM mikrofon (SAI / PDM2PCM) audio rögzítés.

  • LCD — új párhuzamos RGB kijelző vezérlő (LTDC engedélyezve a H7 buildben), HDMI kimenet a TFP410-en keresztül, és FT5X06 érintőképernyős LCD támogatás.

Megszakító API-változások

Felhasználó számára látható API-megszakítások a v3.6.9 és a v3.7.0 között. Hatókör: Python C-modulok a modules/ mappában és Python könyvtárak a scripts/libraries/ mappában.

Minden változás meg van jelölve a hatásával:

  • minor — szűk API; csak az azt használó szkripteket érinti.

  • behavior — azonos API, eltérő eredmények; ellenőrizd újra a hangolt szkripteket.

A változások ebben a sorrendben hatás szerint csoportosítva vannak. Ha csak portolni szeretnéd a kódodat, ugorj a migrációs ellenőrzőlistára a végén. Minden commit hash a GitHubon lévő diffjére hivatkozik.

Régi matematikai segédkönyvtárak eltávolítva (minor)

Az mtx, rv, ulinalg, umatrix és vec segédkönyvtárak eltávolításra kerültek a scripts/libraries mappából az ulab javára. Azok a szkriptek, amelyek import segítségével használják ezeket, hibát fognak adni, és ulab-ra kell portolni őket.

Commits: 1f7da9272

remove_shadows() / chrominvar() / illuminvar() eltávolítva (minor)

Az image.remove_shadows(), image.chrominvar() és image.illuminvar() metódusok törlésre kerültek helyettesítés nélkül. Az ezeket a metódusokat hívó szkripteknek el kell távolítaniuk a hívásokat.

Commits: 3173c2bb3

image.draw_image() szignatúra átdolgozva (minor)

Az image.draw_image() újra lett írva egy új skálázási folyamat tetejére. A régi pozicionális alpha / egyetlen scale argumentum és a korábbi pozicionális sorrend többé nem érvényes; használd az új kulcsszavas formát (x_scale= / y_scale= vagy x_size= / y_size=, alpha=, color_palette=, hint= …).

Commits: 3439f8824

LCD modul újraírása (minor)

Az lcd modul újra lett írva az új kijelző vezérlőhöz. Az lcd.init() mostantól egy kijelző type értéket (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) és új kulcsszavas argumentumokat vesz fel, és a konstans / API felület jelentősen átszervezésre került. A régi, kizárólag shield-es szkriptek többnyire még működnek, de az alapértelmezések és a viselkedés megváltozott — ellenőrizd az LCD szkripteket az új type / framesize API-val szemben.

Commits: 185538207

A yuv_to_* többé nem von ki 128-at (behavior)

Az image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() mostantól a Y tuple-elemet előjel nélküli 0–255 értékként kezeli ahelyett, hogy 128-at vonna ki. A hívóknak a Y-t a korábbi −128 eltolás nélkül kell átadniuk, hogy ugyanazokat a színeket kapják, mint korábban.

Commits: dcf141192

Migrációs ellenőrzőlista

A v3.7.0-ra való tiszta portoláshoz a tipikus munka a következő:

  1. Portold az mtx / rv / ulinalg / umatrix / vec használatot ulab-ra (a matematikai könyvtár eltávolítása).

  2. Távolítsd el az image.remove_shadows() / chrominvar() / illuminvar() hívásokat (az eltávolított képmetódusok).

  3. Frissítsd az image.draw_image() hívásokat az új kulcsszavas szignatúrára (a draw_image átdolgozás).

  4. Ellenőrizd az LCD szkripteket az új lcd type / framesize API-val szemben (az LCD újraírás).

  5. Hagyd el a −128 eltolást, amikor a Y-t átadod a yuv_to_* függvénynek (a yuv_to_* változás).

Minden más szkript változtatás nélkül fut.