v4.1.2

v4.1.2 adds advanced pixel formats with full debayering, YUV image processing, a new imu module (LSM6DSOX), DFSDM digital-microphone audio, and FrogEye2020 event-sensor support. erode()/dilate() behavior and the desktop RPC library changed — read the breaking changes below.

Highlights

  • Advanced pixel formats with full debayering support.

  • YUV image processing.

  • New imu module — LSM6DSOX support (configurable orientation, MLC).

  • DFSDM audio — digital-microphone input.

  • FrogEye2020 event-sensor support.

  • Breaking: erode()/dilate() now operate on non-white pixels and a desktop RPC class was renamed — see the breaking changes.

New features

  • Advanced pixel formats — new pixel-format handling with full debayering support (Bayer → RGB/grayscale across formats).

  • YUV image processing — added YUV image-processing support.

  • imu module — a new IMU module with the LSM6DSOX driver, configurable IMU orientation, and machine-learning-core (MLC) support.

  • Audio — added DFSDM digital-microphone support to the audio module.

  • FrogEye2020 — new FrogEye2020 event-sensor driver, with event-camera example scripts.

Other changes and improvements

  • Software JPEG encoding is ~10 % faster (improved bit handling).

  • machine.I2C now uses the hardware I2C peripheral on STM32 H7.

  • find_apriltags(), find_line_segments(), and the TensorFlow input path were moved onto the unified draw_image backend.

Bug fixes

  • Fixed software-JPEG-encoding overflow situations, image compress, and the IS_JPEG format detection.

Hardware and board support

  • FrogEye2020 event sensor.

  • Arduino Nicla Vision (BORMIO) — updated pinout and USB VID/PID.

  • Arduino Portenta H7 — default sensor clock set to 12 MHz.

Breaking API changes

User-visible API breaks between v4.1.1 and v4.1.2. Scope: Python C-modules in modules/ and Python libraries in scripts/libraries/.

Each change is tagged with its impact:

  • minor — narrow API; host-side tooling only.

  • behavior — same API, different results; re-check tuned scripts.

Changes are grouped by impact in that order. Each commit hash links to its diff on GitHub.

Desktop RPC library class renamed (minor)

In the host-side desktop RPC library (tools/rpc/rpc.py), the rpc_wifi_or_ethernet_master class was renamed to rpc_network_master, and the RTSP/RPC host scripts were switched to use the standard network libraries. This affects host-PC programs only; on-camera scripts are unaffected.

Commits: a2f016ba0, a4858015c

erode() / dilate() operate on non-white pixels (behavior)

Image.erode() and Image.dilate() were fixed to operate on non-white pixels instead of only white pixels. Results differ from previous releases for non-binary / non-white-only images — re-check tuned morphology pipelines.

Commit: 899f80759

Migration checklist

For a clean port to v4.1.2: in host-PC RPC programs, rename rpc_wifi_or_ethernet_master to rpc_network_master (the RPC rename), and re-check any erode() / dilate() results on non-binary images (the morphology change). On-camera scripts otherwise run unchanged.