v1.1.0

v1.1.0 — это основополагающий архитектурный выпуск: в нём отказываются от ранних пользовательских периферийных модулей в пользу стандартных встроенных модулей MicroPython, API обработки изображений перемещается в модуль image, а часы частоты кадров — в time, а также добавляются встроенные каскады Haar, get_pixel() / set_pixel(), поддержка платы OpenMV 2 и отладка через USB-CDC. Это выпуск с большим числом несовместимых изменений, определяющий API, — прочтите несовместимые изменения ниже.

Ключевые моменты

  • Встроенные модули MicroPython — пользовательские модули gpio / led / spi / socket / wlan / uart / file / select были удалены в пользу pyb / machine из MicroPython.

  • Модуль imageImage() / HaarCascade() / дескрипторы теперь находятся в модуле image.

  • time.clock — часы частоты кадров перемещены в модуль time.

  • Встроенные каскады HaarHaarCascade("frontalface") / HaarCascade("eye") (файл не нужен).

  • Поддержка платы OpenMV 2 и отладка через USB-CDC.

  • Несовместимо: структура модулей была переопределена — см. несовместимые изменения.

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

  • Image — добавлены Image.get_pixel(x, y) / set_pixel() и доступ к пикселям по индексу img[i]; встроенные во флеш-память каскады Haar (HaarCascade("frontalface") / HaarCascade("eye")) и ключевое слово stages= для ограничения числа стадий каскада; draw_string() работает на изображениях в оттенках серого.

  • Sensor — добавлены sensor.set_colorbar(), sensor.set_saturation() и размер кадра QQVGA2.

  • mlxmlx.read(type) с выводом mlx.RAINBOW / mlx.GRAYSCALE.

  • Отладка — реализована отладка через USB CDC, запрос версии прошивки fw_version(), прошивка для каждой платы (OpenMV 1 / OpenMV 2) и скрипты самотестирования / цветовых полос; фатальные ошибки и ошибки разбора записываются во флеш-память.

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

  • Нехватка памяти теперь вызывает MemoryError вместо OSError; скрипты выполняются с повторным выбросом исключений, поэтому ошибки печатаются, а не приводят к сбою; скорость передачи последовательного порта настраивается (по умолчанию 921600); увеличена файловая система во флеш-памяти; пиксельная тактовая частота датчика снижена до 54 МГц для стабильности захвата; sensor.reset() полагается только на программный сброс датчика.

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

  • Исправлены сопоставление шаблонов, повторение первого объекта в find_features(), атомарный доступ к регистрам SCCB/I2C, обнаружение микросхемы SD-карты, отображение выводов программного I2C, точность fast_cbrtf / цвета LAB и использование памяти интегральными изображениями / медианным фильтром на OpenMV 1 / 2.

Поддержка аппаратного обеспечения и плат

  • Поддержка платы OpenMV 2 (STM32F427) (а также аппаратный дизайн OpenMV 3); на OpenMV 2 в качестве тактовой частоты датчика используется MCO.

Несовместимые изменения API

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

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

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

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

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

Пользовательские периферийные модули удалены (major)

Ранние пользовательские модули clock / file / gpio / led / select / socket / spi / wlan / uart были удалены в пользу встроенных периферийных модулей pyb / machine из MicroPython. Перенесите скрипты на стандартные эквиваленты MicroPython (например, pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Коммиты: 6d2fafa94

API обработки изображений перемещён в модуль image (major)

Image(), HaarCascade() и функции сохранения/загрузки дескрипторов больше не являются голыми встроенными функциями — они находятся в новом модуле image. Скрипты должны выполнять import image и использовать image.Image / image.HaarCascade().

Коммиты: 54288c535

Часы частоты кадров перемещены в time (major)

Отдельный модуль clock был удалён; часы частоты кадров теперь находятся в time. Используйте import time и clock = time.clock() — возвращаемый объект по-прежнему предоставляет .tick() / .fps() / .avg() / .reset().

Коммиты: a8928ca3b

/flash и /sd больше не добавляются в sys.path (behavior)

Метки томов / корневой каталог были исправлены, и /flash и /sd больше не добавляются автоматически в sys.path. Скрипты, импортировавшие вспомогательные модули по голому имени из этих расположений, должны явно добавить путь (или разместить модули там, где они будут найдены).

Коммиты: 09e77b5da

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

Для чистого переноса на v1.1.0 типичная работа такова:

  1. Замените пользовательские модули gpio / led / spi / uart / socket / wlan / file / select на pyb / machine из MicroPython (удаление пользовательских модулей).

  2. Выполните import image и добавьте префикс image. к Image() / HaarCascade() (перемещение модуля image).

  3. Используйте import time и clock = time.clock() (перемещение clock).

  4. Явно добавьте /flash / /sd в sys.path, если вы импортировали вспомогательные модули по голому имени (изменение sys.path).

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