v4.5.5

v4.5.5 is a small maintenance release focused on image-buffer cache coherency, sensor-reset reliability, and morphology API tidy-up.

Highlights

  • More reliable capture — video buffers are now cache-invalidated before use, and the sensor reset/power-down delay was increased.

  • Breaking: morph()’s ksize is now positional and the obsolete pooling methods were removed (see the breaking changes).

Other changes and improvements

  • Increased the delay after sensor reset / power-down for more reliable camera start-up (the Portenta H7 overrides these delays for its sensor).

Bug fixes

  • Fixed the erode() mask check.

  • Video buffers are now cache-invalidated before being returned, preventing stale/corrupted image data.

  • i.MX RT: a camera transfer is retried if the DMA is still busy; STM32: video-buffer state is reset when frames are dropped.

Breaking API changes

User-visible API breaks between v4.5.4 and v4.5.5.

Each change is tagged with its impact:

  • minor — narrow API; only affects scripts that used it.

  • 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.

morph() ksize positional; pooling removed (minor)

The morph() kernel-size ksize argument is now a positional argument. The obsolete Image.pool() family of pooling methods was removed.

Commits: f92896589, 08ca21fd1

Image conversion argument parsing standardized (behavior)

The image conversion methods (Image.to_*() / to()) were moved onto the standardized mp_arg_parse_all argument parser. Calls that relied on the old positional/keyword ordering may need adjusting.

Commit: 3fee02ffb

Migration checklist

For a clean port to v4.5.5: pass morph()’s ksize positionally, drop any use of the removed pooling methods (the morphology change), and re-check argument order in image conversion calls (the conversion-parsing change).