.. _changelog_v3_6_3: v3.6.3 ====== v3.6.3 enables **TensorFlow on the OpenMV 3 / F7**, adds uint8/int8/float32 model support, switches the MLX90640/AMG8833 thermal sensors to hardware I2C, adds image-diff histograms and lens-correction offset, and reworks readout control. The :mod:`image` hint constants were renamed and ``draw_image()`` scaling changed — read the breaking changes below. .. contents:: On this page :local: :depth: 1 Highlights ---------- - **TensorFlow on OpenMV 3 / F7** — ``tf`` enabled on the F7-based cameras, with uint8/int8/float32 model support. - **Thermal sensors** — MLX90640 and AMG8833 switched to hardware I2C with a new MLX90640 driver. - **Imaging** — image-diff support in ``get_histogram()`` and offset correction for ``lens_corr()``. - **draw_image** — alpha palettes in grayscale mode and reworked readout control. - **Breaking:** the :mod:`image` hint constants were renamed and ``draw_image()`` negative scaling was removed — see the breaking changes. New features ------------ - **TensorFlow** — enabled ``tf`` on OpenMV 3 / F7 and updated TensorFlow to support uint8 / int8 / float32 models. - ``get_histogram()`` — added image-diff capability. - ``lens_corr()`` — added offset correction. - ``draw_image()`` — alpha palettes now work in (non-bilinear) grayscale mode, with bilinear-interpolated alpha palettes and image centering; new readout-control code. Other changes and improvements ------------------------------ - Switched the MLX90640 and AMG8833 to hardware I2C (new MLX90640 driver, board-config HW I2C for external sensors, higher MLX readout retry), enabled I2C fast-mode-plus on cameras that support it, added cambus read/write-bytes with I2C timings, and skipped applying alpha when it is 0 for performance. Bug fixes --------- Camera and imaging: - Fixed and sped up rotation correction, the left-edge Bayer-to-YCbCr bug, and added an edge fix to ``bayer_to_y()`` / ``bayer_to_binary()``. Tooling: - Fixed Python 2/3 errors and the ``get_statistics()`` call order. Breaking API changes -------------------- User-visible API breaks between v3.6.2 and v3.6.3. Scope: Python C-modules in ``modules/`` and Python libraries in ``scripts/libraries/``. 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. If you just want to port your code, jump to the :ref:`migration checklist ` at the end. Each commit hash links to its diff on GitHub. .. _v3_6_3_hints: :mod:`image` hint constants renamed *(minor)* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The :mod:`image` drawing hint constants were renamed: ``image.INTERPOLATE_BILINEAR`` → ``image.IMAGE_HINT_BILINEAR`` and ``image.IMAGE_CENTER`` → ``image.IMAGE_HINT_CENTER``. Scripts passing the old constant names to ``draw_image()`` must use the new names. (These are renamed again to ``image.BILINEAR`` / ``image.CENTER`` in v3.7.0.) *Commits:* `8f8872537 `__ .. _v3_6_3_drawscale: ``draw_image()`` negative scaling removed *(behavior)* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``image.draw_image()`` no longer supports negative scaling, and the texture sample point was moved to the center of the pixel. Scripts that relied on negative scaling to flip an image during draw must flip it another way, and output may shift by up to half a pixel versus before. *Commits:* `7e83dbb92 `__ .. _v3_6_3_migration: Migration checklist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Rename ``image.INTERPOLATE_BILINEAR`` / ``image.IMAGE_CENTER`` to ``image.IMAGE_HINT_BILINEAR`` / ``image.IMAGE_HINT_CENTER`` (:ref:`the hint-constant rename `), and replace any ``draw_image()`` negative scaling with an explicit flip (:ref:`the draw_image scaling change `). All other scripts run unchanged.