v3.6.0

v3.6.0 brings full OV5640 5 MP camera support with new high-resolution framesizes (HD / FHD / QHD / QXGA / WQXGA), updates the core to MicroPython 1.12, heavily optimizes the software JPEG encoder and AprilTag / line detection, adds UVC (USB video) on the OpenMV Cam H7 Plus, and supports QSPI flash up to 32 MB. MicroPython behavior and get_histogram() changed — read the breaking changes below.

Highlights

  • OV5640 5 MP — full camera driver with new HD / FHD / QHD / QXGA / WQXGA / WQXGA2 framesizes.

  • MicroPython 1.12 — the bundled core was updated.

  • Faster pipeline — heavily optimized software JPEG encoding, AprilTag detection, LSD line detection, histeq(), and QR-code decoding.

  • UVC on H7 Plus — the OpenMV Cam H7 Plus can act as a USB video device.

  • Breaking: MicroPython behavior, image.get_histogram() normalization, and the OpenMV 3 JPEG/grayscale output changed — see the breaking changes.

New features

  • OV5640 — added full support for the OV5640 5 MP camera (external clock configuration in sensor init) and the new sensor.HD / FHD / QHD / QXGA / WQXGA / WQXGA2 framesize constants.

  • TIM4 — freed up so it is usable from MicroPython.

  • Added a DAC timed-write example (dac_write_timed.py) and renamed dac_control.py to dac_write.py.

Other changes and improvements

  • Updated the bundled MicroPython to 1.12; heavily optimized the software JPEG encoder (VGA path, grayscale/binary paths, integer instead of floating-point math, optimized MCU capture), LSD find_line_segments(), AprilTag detection, Image.histeq(), and QR-code / RGB-to-gray conversion; added QSPI flash support for chips up to 32 MB; removed the obsolete CMSIS-CNN cnn.py example.

Bug fixes

Camera and imaging:

  • Fixed JPEG encoding corruption at HQQQVGA, binary (1-bit) image → JPEG compression, a find_line_segments() regression (re-enabled the NOTDEF non-aligned check), and minor OV2640 driver issues.

System and boot:

  • Fixed self-test / filesystem corruption (selftest.py now runs before USB MSC is enabled, and USB MSC is enabled on a fatal error so the host can read the error log), the pyb.DAC write_timed(), the H7 machine.I2C timings, F7 overdrive re-enable after stop mode, and the stop_mode.py rtc.wakeup() interval.

Hardware and board support

  • OV5640 — full 5 MP camera driver with high-resolution framesizes.

  • OpenMV Cam H7 Plus — UVC (USB video) support; the OPENMV4R board target was renamed OPENMV4P.

  • QSPI flash — chips up to 32 MB are now supported.

Breaking API changes

User-visible API breaks between v3.5.2 and v3.6.0. Scope: Python C-modules in modules/ and Python libraries in scripts/libraries/.

All three breaking changes are behavior changes (same API, different results) — re-check affected scripts. Each commit hash links to its diff on GitHub.

MicroPython updated to 1.12 (behavior)

The bundled MicroPython core was updated to 1.12. Standard-library and language behavior follows upstream MicroPython 1.12; re-check scripts that depend on version-specific micropython / standard-module behavior.

Commits: eafd431ea

image.get_histogram() threshold normalization changed (behavior)

image.get_histogram() (and get_statistics()) with color thresholds now normalizes by the number of thresholded pixels rather than the whole ROI, and uses floor instead of round for bin indexing. Histogram/statistics values for thresholded calls differ from previous releases — re-tune code that compared against absolute histogram values.

Commits: 7cf0f8089

OpenMV 3 JPEG/grayscale output changed (behavior)

To save flash, the OpenMV 3 (M7) YUV lookup table was disabled, so JPEG and grayscale output pixel values are computed slightly differently on the OpenMV 3. Output is still valid but differs marginally from prior releases; re-check pixel-exact comparisons on the OpenMV 3.

Commits: 0e4b46e41

Migration checklist

Re-validate scripts that depend on version-specific MicroPython behavior against 1.12 (the MicroPython bump), re-tune code that compared against absolute get_histogram() / get_statistics() values when using color thresholds (the histogram change), and re-check pixel-exact comparisons on the OpenMV 3 (the OpenMV 3 output change). All other scripts run unchanged.