v2.6.0

v2.6.0 обновляет ядро до MicroPython 1.9.2, переводит find_line_segments() на алгоритм LSD, добавляет поддержку датчика с глобальным затвором MT9V034, коррекцию перспективы image.rotation_corr(), sensor.sleep(), сохранение необработанных изображений и заготовки для платы OpenMV 4. Поведение find_line_segments(), нескольких размеров кадра и MicroPython изменилось — прочитайте раздел об изменениях, нарушающих совместимость, ниже.

Основные изменения

  • Обновление ядра до MicroPython 1.9.2.

  • Сегменты линий LSDfind_line_segments() теперь использует алгоритм Line Segment Detector.

  • Поддержка датчика с глобальным затвором MT9V034.

  • image.rotation_corr() — коррекция перспективного поворота по осям X/Y/Z.

  • sensor.sleep() — режим программного сна и сохранение необработанных (несжатых) изображений.

  • Нарушает совместимость: параметры find_line_segments(), несколько констант размеров кадра и поведение MicroPython изменились — см. раздел об изменениях, нарушающих совместимость.

Новые возможности

  • image.rotation_corr() — добавлена коррекция перспективного поворота по осям X/Y/Z с примером rotation_correction.py.

  • sensor.sleep(enable) — перевод камеры в режим программного сна (с примером режима сна).

  • Необработанные изображенияimage.save() теперь может записывать необработанные (несжатые) изображения.

  • MT9V034 — добавлена поддержка датчика с глобальным затвором с константой sensor.MT9V034.

  • Добавлен пример lens_correction.py для image.lens_corr() и файлы поддержки платы OpenMV 4 (заготовки конфигурации платы / загрузчика / компоновщика).

Прочие изменения и улучшения

  • Обновлён встроенный MicroPython до 1.9.2 (обвязка порта 1.9, oofatfs); переписан find_line_segments.py под новый API LSD (коррекция объектива по умолчанию отключена); обновлён хост-API openmv (init(portname) / exec_script / stop_script); снижена тактовая частота датчика на OpenMV Cam M4 (меньший максимальный FPS на M4); кнопка Stop в IDE теперь использует жёсткое принудительное исключение для более надёжного прерывания скриптов.

Исправления ошибок

  • Исправлены: image.lens_corr(), оставлявший устаревшие пиксели (буфер назначения теперь очищается перед перераспределением), blob.density(), использовавший целочисленное деление (всегда возвращал 0, #268), отображение выводов UART на OpenMV 2 (M4); кроме того, qrcodes_with_lens_corr.py обновлён для использования QVGA.

Поддержка оборудования и плат

  • Датчик с глобальным затвором MT9V034.

  • OpenMV 4 — файлы поддержки платы (заготовки).

  • OpenMV 2 (M4) — исправление отображения выводов UART.

Изменения API, нарушающие совместимость

Видимые пользователю изменения API между v2.5.0 и v2.6.0. Область: Python C-модули в modules/ и библиотеки Python в scripts/libraries/.

Каждое изменение помечено степенью влияния:

  • major — затрагивает большинство скриптов, использовавших данную возможность; потребуется переработка кода.

  • minor — узкий API; затрагивает только скрипты, которые его использовали.

  • behavior — тот же API, но другие результаты; перепроверьте отлаженные скрипты.

Изменения сгруппированы по степени влияния в этом порядке. Если вы просто хотите перенести свой код, перейдите к контрольному списку миграции в конце. Каждый хэш коммита ведёт к его diff на GitHub.

find_line_segments() переведён на LSD (major)

image.find_line_segments() был переписан для использования алгоритма Line Segment Detector (LSD). Прежние параметры threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride заменены на merge_distance и max_theta_diff (например, find_line_segments(merge_distance=0, max_theta_diff=15)). Кроме того, функция больше недоступна на платах класса M4 (OpenMV 2).

Коммиты: 5a3153c8b, cbe2a4aeb

Удалены недопустимые константы размеров кадра (minor)

Недопустимые константы размеров кадра sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA были удалены (#261). Скрипты, использующие их, должны перейти на поддерживаемое разрешение.

Коммиты: 35ab0a26f

find_qrcodes() удалён на OpenMV Cam M4 (minor)

image.find_qrcodes() больше не компилируется на платах класса M4 (OpenMV 2). Для обнаружения QR-кодов на оборудовании M4 используйте плату OpenMV 3 (M7) или другую функцию кода. Прочие платы не затронуты.

Коммиты: 7dff089e6

MicroPython обновлён до 1.9.2 (behavior)

Встроенное ядро MicroPython было обновлено до 1.9.2. Поведение стандартной библиотеки и языка соответствует апстриму MicroPython 1.9.2 — перепроверьте скрипты, зависящие от поведения, специфичного для версии. В частности, срез изображения с шагом, отличным от 1, теперь вызывает OSError вместо NotImplementedError.

Коммиты: 11bed4b99

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

Для чистого переноса на v2.6.0 обычно требуется следующее:

  1. Переписать вызовы find_line_segments() под параметры LSD (merge_distance / max_theta_diff) и перенести эту обработку с M4 (переработка LSD).

  2. Заменить удалённые константы размеров кадра поддерживаемым разрешением (удаление размеров кадра).

  3. Перенести обнаружение QR-кодов с M4 на плату M7 (изменение find_qrcodes).

  4. Повторно проверить поведение, специфичное для версии, относительно MicroPython 1.9.2 (обновление MicroPython).

Все остальные скрипты работают без изменений.