v2.8.0

v2.8.0 — масштабний реліз. Він додає підтримку OpenMV Cam H7 (STM32H7) з апаратним JPEG-кодувальником та H7 ADC/DAC, масштабне оновлення API image (товщина/заливка при малюванні, математичні/бінарні операції, багато нових фільтрів, порогування Оцу), підтримку потоків MicroPython та модуль версій omv. Порядок розбору аргументів Python зафіксовано, а image.mask_ellipse() видалено — ознайомтеся зі змінами, що порушують сумісність, нижче.

Основні зміни

  • OpenMV Cam H7 — нова плата STM32H7 з апаратним JPEG-кодувальником та H7 ADC / DAC.

  • image — оновлення: товщина ліній, заливка фігур, draw_arrow() / draw_image(), повний набір математичних/бінарних операцій та багато нових фільтрів.

  • Порогування Оцуhistogram.get_threshold() та об’єкт Threshold.

  • Потоки — підтримка _thread у MicroPython.

  • Модуль omv — інформація про версію / плату.

  • Зміна сумісності: порядок позиційних аргументів Python тепер суворо фіксований, а image.mask_ellipse() видалено — дивіться розділ про зміни, що порушують сумісність.

Нові можливості

  • OpenMV Cam H7 — підтримка плати STM32H7 з апаратним JPEG-кодувальником, H7 ADC та H7 DAC.

  • Малювання — додано товщину ліній (thickness), заливку фігур fill (прямокутник / коло), масштабування тексту scale / кернінг, ключове слово mono_space у draw_string(), image.draw_arrow() та image.draw_image() (малювання спрайтів / масок).

  • Математичні операції — додано add(), sub(), mul(), div(), min(), max(), difference(), blend(), replace()hmirror / vflip / mask) та remove_shadows(); базові операції тепер приймають скалярне/кольорове значення, що застосовується до всіх пікселів.

  • Бінарні / морфологічні операції — новий тип бінарного зображення та binary(); операції над рядками та erode() / dilate() приймають маски; додано open() / close() / top_hat() / black_hat().

  • Фільтри — додано cartoon, flood_fill, bilateral, laplacian, псевдоніми blur / gaussian_blur та адаптивне вирівнювання гістограми (histeq(adaptive=, clip_limit=, mask=)).

  • Статистикаget_statistics() / get_histogram() приймають список порогів кольору та invert; додано порогування Оцу histogram.get_threshold() та об’єкт Threshold.

  • CMSIS CNN — додано image.classify_object() з прикладом cnn.py (замінено модулем nn у версії v3.0.0).

  • Потоки — увімкнено модуль MicroPython _thread.

  • Модуль omv — додано інформацію про версію (version_string, arch, board_type, board_id); увімкнено шину machine I2C4 та спеціальні математичні функції (erf, gamma, …); додано приклади для motor-shield та багато нових скриптів.

Інші зміни та вдосконалення

  • Зовнішній тактовий сигнал датчика H7 знижено до 48 МГц (краща якість зображення, нижча частота кадрів); низька/висока якість JPEG тепер конфігурується для кожної плати (та налаштована для H7); додано конфігурацію ознак imlib_config.h для кожної плати (всі функції обробки зображень залишаються увімкненими у стандартній мікропрограмі); оновлено вбудований MicroPython.

Виправлення помилок

Обробка зображень:

  • Виправлено image.save() без розширення файлу, відображення gain_db / gain_db_ceiling для OV2640 / OV7725 / OV9650 / MT9V034, надмірне підсилення у sharpen(), морфологічний крайовий шум, ділення на нуль в операції над зображенням та аварійне завершення через переповнення стеку при надто великому розмірі ядра фільтра (тепер виводиться чітке повідомлення про помилку).

Система:

  • Захищено USB VCP буфер атомарною секцією (пошкодження даних серійного порту, #313), виправлено підключення USB у Windows, монтування внутрішньої файлової системи флеш-пам’яті при збої SD-карти, значення PLLP у cpufreq set_frequency() та помилку прошивки завантажувача.

Підтримка апаратного забезпечення та плат

  • OpenMV Cam H7 (STM32H7) — нова плата з апаратним JPEG-кодувальником та H7 ADC / DAC.

  • machine — увімкнено шину I2C4.

Зміни API, що порушують сумісність

Видимі для користувача зміни API між v2.7.0 та v2.8.0. Область застосування: Python C-модулі у modules/ та бібліотеки Python у scripts/libraries/.

Обидві зміни є незначними і стосуються лише скриптів, які використовують відповідну функцію. Кожен хеш коміту посилається на його diff на GitHub.

Порядок позиційних аргументів Python тепер суворо фіксований (незначна зміна)

Розбір аргументів у Python C-модулях (image / sensor / fir / gif / lcd / mjpeg) тепер читає позиційні аргументи перед ключовими та фіксує їхній порядок. У поєднанні з новими ключовими аргументами методів малювання (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() отримали thickness / fill / scale / size), код, який передавав параметри не в тому порядку позиційно — або передавав позиційний color після одного з нових аргументів — повинен використовувати ключові аргументи або задокументований позиційний порядок.

Коміти: e0e112468, fc74e70c3

image.mask_ellipse() видалено (незначна зміна)

image.mask_ellipse() видалено. Скрипти, що її викликали, повинні видалити цей виклик або використовувати явну область інтересу (ROI) / зображення-маску.

Коміти: d7159fba3

Контрольний список міграції

Передавайте аргументи за ключовим словом (або в задокументованому позиційному порядку), особливо color у методах малювання (зміна порядку аргументів), та видаліть виклики image.mask_ellipse() (видалення mask_ellipse). Всі інші скрипти працюють без змін.