v1.1.0

v1.1.0 is de fundamentele architectuurrelease: het laat de vroege aangepaste randapparaatmodules vallen ten gunste van standaard MicroPython-builtins, verplaatst de imaging-API naar de image-module en de framesnelheidsklok naar time, en voegt ingebouwde Haar-cascades, get_pixel() / set_pixel(), ondersteuning voor het OpenMV 2-board en USB-CDC-debugging toe. Het is een sterk ingrijpende, API-bepalende release — lees de ingrijpende wijzigingen hieronder.

Hoogtepunten

  • MicroPython-builtins — de aangepaste modules gpio / led / spi / socket / wlan / uart / file / select zijn verwijderd ten gunste van MicroPython’s pyb / machine.

  • image-module — Image() / HaarCascade() / descriptors zitten nu in de image-module.

  • time.clock — de framesnelheidsklok is verplaatst naar de time-module.

  • Ingebouwde Haar-cascadesHaarCascade("frontalface") / HaarCascade("eye") (geen bestand nodig).

  • Ondersteuning voor het OpenMV 2-board en USB-CDC-debugging.

  • Ingrijpend: de modulestructuur is opnieuw gedefinieerd — zie de ingrijpende wijzigingen.

Nieuwe functies

  • ImageImage.get_pixel(x, y) / set_pixel() en img[i]-subscript-pixeltoegang toegevoegd; ingebouwde Haar-cascades in flashgeheugen (HaarCascade("frontalface") / HaarCascade("eye")) en een stages=-keyword om cascadefasen te beperken; draw_string() werkt op grijswaardenafbeeldingen.

  • Sensorsensor.set_colorbar(), sensor.set_saturation() en het QQVGA2-framesize toegevoegd.

  • mlxmlx.read(type) met mlx.RAINBOW / mlx.GRAYSCALE-uitvoer.

  • Debugging — debugging via USB CDC geïmplementeerd, een firmware-fw_version()-query, firmware per board (OpenMV 1 / OpenMV 2) en zelftest- / colorbar-scripts; fatale/parse-fouten worden naar het flashgeheugen gelogd.

Overige wijzigingen en verbeteringen

  • Onvoldoende geheugen veroorzaakt nu een MemoryError in plaats van een OSError; scripts draaien met re-raise van uitzonderingen zodat fouten worden afgedrukt in plaats van te crashen; de seriële baudrate is configureerbaar (standaard 921600); een groter flashgeheugenbestandssysteem; de sensor-pixelklok is verlaagd naar 54 MHz voor stabiliteit bij opname; sensor.reset() vertrouwt nu uitsluitend op een soft reset van de sensor.

Foutoplossingen

  • Template matching verholpen, find_features() dat het eerste object herhaalde, atomaire SCCB/I2C-registertoegang, SD-kaart-chipdetectie, soft-I2C-pinmapping, fast_cbrtf / LAB-kleurnauwkeurigheid, en het geheugengebruik van integraalafbeeldingen / medianfilters op de OpenMV 1 / 2.

Hardware- en boardondersteuning

  • Ondersteuning voor het OpenMV 2-board (STM32F427) (en het hardware-ontwerp van de OpenMV 3); MCO gebruikt als sensorklok op de OpenMV 2.

Ingrijpende API-wijzigingen

Voor de gebruiker zichtbare API-breuken tussen v1.0.3-beta en v1.1.0. Scope: Python C-modules in modules/ en Python-libraries in scripts/libraries/.

Elke wijziging is gemarkeerd met de bijbehorende impact:

  • major — treft de meeste scripts die de functie gebruikten; je zult code moeten porten.

  • behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.

Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, spring dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar de bijbehorende diff op GitHub.

Aangepaste randapparaatmodules verwijderd (major)

De vroege aangepaste modules clock / file / gpio / led / select / socket / spi / wlan / uart zijn verwijderd ten gunste van MicroPython’s ingebouwde pyb / machine-randapparaten. Port scripts naar de standaard MicroPython-equivalenten (bijv. pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Commits: 6d2fafa94

Imaging-API verplaatst naar de image-module (major)

Image(), HaarCascade() en de functies voor het opslaan/laden van descriptors zijn niet langer kale builtins — ze leven in de nieuwe image-module. Scripts moeten import image gebruiken en image.Image / image.HaarCascade().

Commits: 54288c535

Framesnelheidsklok verplaatst naar time (major)

De losstaande clock-module is verwijderd; de framesnelheidsklok leeft nu in time. Gebruik import time en clock = time.clock() — het teruggegeven object biedt nog steeds .tick() / .fps() / .avg() / .reset().

Commits: a8928ca3b

/flash en /sd worden niet langer toegevoegd aan sys.path (behavior)

De volumelabels / rootdirectory zijn vastgezet en /flash en /sd worden niet langer automatisch aan sys.path toegevoegd. Scripts die helpermodules op kale naam vanaf die locaties importeerden, moeten het pad expliciet toevoegen (of de modules plaatsen waar ze gevonden worden).

Commits: 09e77b5da

Migratiechecklist

Voor een schone port naar v1.1.0 is het gebruikelijke werk:

  1. Vervang de aangepaste modules gpio / led / spi / uart / socket / wlan / file / select door MicroPython pyb / machine (de verwijdering van aangepaste modules).

  2. import image en zet image. voor Image() / HaarCascade() (de verplaatsing van de image-module).

  3. Gebruik import time en clock = time.clock() (de verplaatsing van de klok).

  4. Voeg /flash / /sd expliciet toe aan sys.path als je helpermodules op kale naam importeerde (de sys.path-wijziging).

Alle overige scripts draaien ongewijzigd.