v3.7.0

v3.7.0 je veliko izdanje. Dodaje audio modul (PDM mikrofon na Portenta H7) s novim neblokirajućim API-jem za povratne pozive, micro_speech TensorFlow modul za prepoznavanje govora, potpuno novi paralelni RGB LCD kontroler (s HDMI izlazom i FT5X06 dodirom), metodu image.flush() s konstantama formata piksela te prepisanu image.draw_image() cjevovod za skaliranje. Uklonjeno je nekoliko zastarjelih pomoćnih biblioteka i metoda slike te se promijenila yuv_to_* matematika — pročitajte promjene koje narušavaju kompatibilnost u nastavku.

Istaknuto

  • audio modul — snimanje s ugrađenog PDM mikrofona na Portenta H7 s neblokirajućim start_streaming(callback) API-jem.

  • micro_speech — TensorFlow modul za prepoznavanje mikro-govora.

  • Novi LCD kontroler — podrška za paralelni RGB zaslon, HDMI izlaz (TFP410) i FT5X06 dodir.

  • image.draw_image() — prepisan s potpunim cjevovodom za skaliranje/alpha/paletu (x_scale / y_scale / hint / color_palette …).

  • image.flush() te konstante formata piksela (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG).

  • Narušava kompatibilnost: uklonjene su zastarjele matematičke pomoćne biblioteke i nekoliko metoda slike, draw_image() / LCD API-ji su preuređeni, a yuv_to_* više ne oduzima 128 — pogledajte promjene koje narušavaju kompatibilnost.

Nove značajke

  • audio — novi audio modul za Portenta H7 za snimanje s PDM mikrofona: audio.init(), neblokirajući audio.start_streaming(callback) te audio.stop_streaming() (frekvencija se navodi u Hz).

  • micro_speech — novi modul s klasom MicroSpeech, audio_callback() te micro_speech() za TensorFlow prepoznavanje govora; listen() koristi prosjek kliznog prozora i prihvaća ključnu riječ filter za ograničavanje rezultata na popis oznaka.

  • LCD — novi LCD kontroler s podrškom za paralelni RGB zaslon, tipovima LCD_NONE / LCD_SHIELD / LCD_DISPLAY, mnogim konstantama veličine sličice, triple_buffer / framesize / refresh / bgr / deinit, proširenim display, HDMI izlazom putem TFP410 te podrškom za FT5X06 dodirni zaslon.

  • image.flush() — dodana metoda image.flush() i konstante formata piksela (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG).

  • image.draw_image() — prepisan s novim cjevovodom za skaliranje: x_scale / y_scale / x_size / y_size, rgb_channel, alpha, color_palette, alpha_palette te hint, uz konstante image.AREA / BILINEAR / BICUBIC / CENTER / EXTRACT_RGB_CHANNEL_FIRST / APPLY_COLOR_PALETTE_FIRST i nove primjere alpha-miješanja / tablice boja / skaliranja.

  • ImageReader.next_frame() dobio je ključnu riječ pause za onemogućavanje kašnjenja reprodukcije u stvarnom vremenu.

  • Dodani Portenta audio primjeri (audio_fft.py, micro_speech.py) te primjer buđenja iz zaustavljenog stanja pomoću ExtInt.

Ostale promjene i poboljšanja

  • Ugrađeni primjeri reorganizirani su pod scripts/examples/Arduino/; međuspremnik slike sada se trenutno ažurira nakon učitavanja/stvaranja slika s copy_to_fb=True (nije potrebno ručno pražnjenje); Portenta gomila (heap) blago je smanjena kako bi stalo više statičkog stanja upravljačkih programa.

Ispravci grešaka

Kamera i obrada slike:

  • Ispravljena zamijenjena crvena/plava (RGB565 redoslijed bajtova) u snimljenim slikama, zaokruživanje DMA2D crtanja radi usklađivanja s ostalim kodom za crtanje, fb_alloc korupcija u rekurzivnim alokacijama (find_blobs()) te uvjetovani top_hat() / black_hat() tako da budu omogućene i binarne i matematičke operacije.

Zaslon i audio:

  • Ispravljen izlaz LCD shielda i Portenta mono audio način rada s 1 kanalom.

Portenta:

  • Zaobiđen problem s Ethernet/SDRAM (postavljanje rst_eth na visoko) i ispravljena konfiguracija vremenskog usklađivanja SDRAM-a.

Hardver i podrška za ploče

  • Arduino Portenta H7 — snimanje audija s ugrađenog PDM mikrofona (SAI / PDM2PCM).

  • LCD — novi kontroler za paralelni RGB zaslon (LTDC omogućen u H7 buildu), HDMI izlaz putem TFP410 te podrška za FT5X06 dodirni LCD zaslon.

Promjene API-ja koje narušavaju kompatibilnost

Korisniku vidljive promjene API-ja koje narušavaju kompatibilnost između v3.6.9 i v3.7.0. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.

Svaka promjena označena je svojim utjecajem:

  • minor — uski API; utječe samo na skripte koje su ga koristile.

  • behavior — isti API, drugačiji rezultati; ponovno provjerite ugođene skripte.

Promjene su grupirane po utjecaju tim redoslijedom. Ako samo želite prenijeti svoj kod, prijeđite na kontrolni popis za migraciju na kraju. Svaki hash commita vodi na njegov diff na GitHubu.

Uklonjene zastarjele matematičke pomoćne biblioteke (minor)

Pomoćne biblioteke mtx, rv, ulinalg, umatrix i vec uklonjene su iz scripts/libraries u korist ulab. Skripte koje import bilo koju od njih neće raditi i moraju se prenijeti na ulab.

Commitovi: 1f7da9272

Uklonjeni remove_shadows() / chrominvar() / illuminvar() (minor)

image.remove_shadows(), image.chrominvar() i image.illuminvar() izbrisani su bez zamjene. Skripte koje pozivaju ove metode moraju ukloniti te pozive.

Commitovi: 3173c2bb3

Preuređen potpis image.draw_image() (minor)

image.draw_image() prepisan je na temelju novog cjevovoda za skaliranje. Stari pozicijski alpha / jedinstveni scale argumenti i prijašnji pozicijski redoslijed više ne vrijede; koristite novi oblik s ključnim riječima (x_scale= / y_scale= ili x_size= / y_size=, alpha=, color_palette=, hint= …).

Commitovi: 3439f8824

Prepisivanje LCD modula (minor)

Modul lcd prepisan je za novi kontroler zaslona. lcd.init() sada prima type zaslona (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) i nove argumente s ključnim riječima, a površina konstanti / API-ja znatno je reorganizirana. Stare skripte samo za shield uglavnom još rade, ali su se zadane vrijednosti i ponašanje promijenili — pregledajte LCD skripte u odnosu na novi type / framesize API.

Commitovi: 185538207

yuv_to_* više ne oduzima 128 (behavior)

image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() sada tretiraju Y element torke kao predznakovno nedefinirani (unsigned) vrijednost 0–255 umjesto da oduzimaju 128. Pozivatelji moraju proslijediti Y bez prijašnje pristranosti od −128 kako bi dobili iste boje kao prije.

Commitovi: dcf141192

Kontrolni popis za migraciju

Za čist prijenos na v3.7.0 tipičan posao je:

  1. Prenesite upotrebu mtx / rv / ulinalg / umatrix / vec na ulab (uklanjanje matematičkih biblioteka).

  2. Uklonite pozive image.remove_shadows() / chrominvar() / illuminvar() (uklonjene metode slike).

  3. Ažurirajte pozive image.draw_image() na novi potpis s ključnim riječima (preuređenje draw_image).

  4. Pregledajte LCD skripte u odnosu na novi lcd type / framesize API (prepisivanje LCD-a).

  5. Uklonite pristranost od −128 prilikom prosljeđivanja Y u yuv_to_* (promjena yuv_to_*).

Sve ostale skripte rade nepromijenjene.