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.Модуль
image—Image()/HaarCascade()/ дескрипторы теперь находятся в модулеimage.time.clock— часы частоты кадров перемещены в модульtime.Встроенные каскады Haar —
HaarCascade("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.mlx—mlx.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 типичная работа такова:
Замените пользовательские модули
gpio/led/spi/uart/socket/wlan/file/selectнаpyb/machineиз MicroPython (удаление пользовательских модулей).Выполните
import imageи добавьте префиксimage.кImage()/HaarCascade()(перемещение модуля image).Используйте
import timeиclock = time.clock()(перемещение clock).Явно добавьте
/flash//sdвsys.path, если вы импортировали вспомогательные модули по голому имени (изменение sys.path).
Все остальные скрипты работают без изменений.