v3.6.1¶
v3.6.1 — це великий реліз. Він додає модуль imu (LSM6DS3), набір нових API-геттерів sensor з автоматичним обертанням на основі IMU, 4-точкову перспективну корекцію rotation_corr(), та підтримку Arduino Portenta H7 з камерами HIMAX HM01B0 та OV7690. Ряд API sensor / image змінився, а TensorFlow на M7 було вилучено — ознайомтеся зі змінами, що порушують зворотну сумісність.
Основні можливості¶
Модуль
imu— акселерометр / гіроскоп / температура / крен / тангаж на LSM6DS3 (OpenMV 4 / Portenta).Геттери датчика + автообертання —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation(), та обертання знімка на основі IMU.Перспективна корекція —
rotation_corr()отримує ключові словаfovтаcorners(4 точки).Нове обладнання — Arduino Portenta H7, HIMAX HM01B0 та камера OV7690.
Несумісні зміни:
set_pixformat()/set_framesize()тепер повертаютьNone,sensor.set_framerate()було вилучено, TensorFlow вилучено на M7, аlens_corr()/linpolar()тепер вимагають парних розмірів — дивіться зміни, що порушують сумісність.
Нові можливості¶
imu— новий модуль IMU:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch(), таimu.sleep()(LSM6DS3 на OpenMV 4 / Portenta).Геттери датчика — додано
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose(), таset_auto_rotation()/get_auto_rotation().Автообертання —
sensor.snapshot()використовує IMU для перевертання / дзеркального відображення / транспонування кадрів, коли автообертання увімкнено.rotation_corr()— додано ключові словаfovтаcorners(4-точкова перспектива) з прикладами перспективної корекції.lcd.init()— додано іменований аргументbgr.collections.deque— увімкнено у збірці MicroPython.Додано константи ідентифікаторів
sensor.OV7690таsensor.HM01B0і приклад фільтра зображень у стилі numpy за допомогоюulab.
Інші зміни та вдосконалення¶
Значно оптимізовано фільтри зображень (медіанний / режимний / середній / …),
find_circles()та корекцію лінзи;alloc_extra_fbтепер може виділяти будь-яку кількість байтів; модель виявлення людей перебудовано з новою операцією усереднювального пулінгу.
Виправлення помилок¶
Камера та датчики:
Виправлено
sleep()для OV2640 (тепер використовує регістр режиму очікування COM2 замість виводу вимкнення живлення), конфігурацію виводу FSYNC, полярності HSYNC/VSYNC і адресу/сканування I2C для HM01B0, GPIO вимкнення живлення датчика Portenta та вивід скидання камери, а також вимкнено автообертання при куті нахилу IMU, близькому до 90°/270°.
Обробка зображень та система:
Виправлено помилку перевірки меж у фільтрі зображень, жорсткий збій при вимкненні D-кешу, завантаження на платах без картки SD, помилку
load_to_fbуtf.load(), переповнення стека при виявленні людей (стек H7 збільшено до ≥12 КБ), а також зміщення USB-дескриптора для режиму високої швидкості на OpenMV 4 Plus.
Апаратне забезпечення та підтримка плат¶
Arduino Portenta H7 — початкова підготовка плати (конфігурація тактового генератора/OSC/HSE для STM32H747, заголовки CMSIS, ADC, SDRAM, Arduino USB PID).
HIMAX HM01B0 — новий драйвер монохромної камери (Bayer, тактовий генератор на зовнішньому осциляторі).
OV7690 — новий драйвер камери.
IMU LSM6DS3 — OpenMV 4 / Portenta.
Несумісні зміни API¶
Зміни API, помітні для користувача, між v3.6.0 та v3.6.1. Область застосування: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.
Кожна зміна позначена ступенем впливу:
незначний — вузький API; впливає лише на скрипти, що його використовували.
поведінковий — той самий API, різні результати; перевірте налаштовані скрипти.
Зміни згруповано за ступенем впливу в такому порядку. Якщо ви просто хочете перенести свій код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту веде до його diff на GitHub.
sensor.set_framerate() вилучено (незначний)¶
Заглушку sensor.set_framerate() без дії було вилучено; її виклик тепер викликає AttributeError. Видаліть цей виклик і керуйте часом кадрів через розмір кадру/витримку. (Робочий set_framerate() повернуто у v4.0.2.)
Коміти: 705e98f91
TensorFlow вилучено з OpenMV Cam M7 (незначний)¶
TensorFlow (модуль tf) було вимкнено на OpenMV Cam M7 / OpenMV 3 (він більше не вміщується). import tf на M7 завершується помилкою — використовуйте камеру класу H7 для TensorFlow. (tf знову увімкнено на F7 у v3.6.3.)
Коміти: 2ae875077
set_pixformat() / set_framesize() повертають None (поведінковий)¶
sensor.set_pixformat() та sensor.set_framesize() тепер повертають None замість True, а непідтримуваний формат пікселів тепер викликає ValueError замість твердження. Код, що перевіряв повернуте значення (наприклад, if sensor.set_pixformat(...):) необхідно виправити, а код, що перехоплював AssertionError для непідтримуваних форматів, повинен перехоплювати ValueError.
Коміти: f314ac4e7
lens_corr() / linpolar() / logpolar() вимагають парних розмірів (поведінковий)¶
image.lens_corr() та image.linpolar() / image.logpolar() тепер вимагають парної ширини та висоти зображення і викликають помилку при непарних розмірах. Обріжте або змініть розмір зображення до парних значень перед викликом цих методів.
Контрольний список міграції¶
Для чистого перенесення на v3.6.1 зазвичай потрібно виконати:
Видалити виклики
sensor.set_framerate()(вилучення set_framerate).Перенести завдання TensorFlow з OpenMV Cam M7 (зміна TensorFlow на M7).
Припинити залежність від повернутого значення
set_pixformat()/set_framesize()та перехоплюватиValueErrorдля непідтримуваних форматів пікселів (зміна повернутого значення).Забезпечити парні розміри зображення перед
lens_corr()/linpolar()/logpolar()(вимога парних розмірів).
Усі інші скрипти працюють без змін.