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() тепер використовує алгоритм детектора сегментів ліній.

  • Підтримка датчика з глобальним затвором 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 (менша максимальна частота кадрів на 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. Область застосування: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.

Кожна зміна позначена відповідним рівнем впливу:

  • major (значний) — стосується більшості скриптів, що використовували функцію; потрібне портування коду.

  • minor (незначний) — вузький API; стосується лише скриптів, що безпосередньо його використовували.

  • behavior (поведінковий) — той самий API, інші результати; перевірте налаштовані скрипти.

Зміни згруповано за рівнем впливу у вказаному порядку. Якщо вам потрібно лише портувати код — перейдіть до контрольного списку міграції у кінці. Кожен хеш коміту посилається на його різницю на GitHub.

find_line_segments() перейшла на LSD (значна)

image.find_line_segments() була переписана для використання алгоритму детектора сегментів ліній (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

Видалено недійсні константи розміру кадру (незначна)

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

Коміти: 35ab0a26f

find_qrcodes() видалено для OpenMV Cam M4 (незначна)

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

Коміти: 7dff089e6

MicroPython оновлено до 1.9.2 (поведінковий)

Вбудоване ядро MicroPython оновлено до 1.9.2. Поведінка стандартної бібліотеки та мови відповідає MicroPython 1.9.2 upstream — перевірте скрипти, які залежать від поведінки певної версії. Зокрема, зрізання зображення з кроком, відмінним від 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).

Усі інші скрипти працюють без змін.