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.
Сегменты линий LSD —
find_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 (коррекция объектива по умолчанию отключена); обновлён хост-APIopenmv(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).
Удалены недопустимые константы размеров кадра (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 обычно требуется следующее:
Переписать вызовы
find_line_segments()под параметры LSD (merge_distance/max_theta_diff) и перенести эту обработку с M4 (переработка LSD).Заменить удалённые константы размеров кадра поддерживаемым разрешением (удаление размеров кадра).
Перенести обнаружение QR-кодов с M4 на плату M7 (изменение find_qrcodes).
Повторно проверить поведение, специфичное для версии, относительно MicroPython 1.9.2 (обновление MicroPython).
Все остальные скрипты работают без изменений.