v2.7.0¶
v2.7.0 модернізує API автоматичного підсилення / автоматичної витримки / балансу білого sensor до фізичних одиниць (дБ / мікросекунди), переробляє фазову кореляцію find_displacement() (додаючи поворот/масштаб), а також додає get_similarity() (SSIM), chrominvar() / illuminvar(), додаткові кадрові буфери та бібліотеку MQTT. Це великий випуск із критичними змінами — ознайомтеся з ними нижче.
Основні можливості¶
Сучасний API датчика —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()тепер використовують дБ / мікросекунди з відповіднимиget_gain_db()/get_exposure_us()/get_rgb_gain_db().Фазова кореляція — перероблено
find_displacement()з підтримкою повороту / масштабу таfind_rotscale()/linpolar()/logpolar().SSIM —
image.get_similarity()— структурна схожість.Додаткові кадрові буфери —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — нова бібліотека MQTT.
Критична зміна: API підсилення/витримки/балансу білого датчика,
find_displacement()/ розміри кадрів FFT,find_number(), інструменти мікропрограми WINC таz_rotation()тегів AprilTag змінилися — див. критичні зміни.
Нові можливості¶
Датчик — додано
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), ключове словоgain_db_ceilingдляset_auto_gain(), підтримкуhmirror/vflipдля MT9V034, а такожsensor.alloc_extra_fb()/sensor.dealloc_extra_fb()для додаткових кадрових буферів у RAM.Зображення — додано
remove_shadows(),min()/max()(різниця кадрів),get_similarity()(SSIM) з прикладом структурної схожості,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), ключові слова threshold / offset / invert для адаптивних фільтрівmean()/mode()/median()/midpoint(),len()/ індексування об’єкта ключових точок та аксесор.match()для об’єкта збігу ключових точок.Бібліотеки / мережа — додано бібліотеку MQTT (з прикладом MQTT через WiFi) та режим
network.WINC.MODE_BSPдля програмування мікропрограми WINC через відладочний UART.Приклади — додано
deep_sleep.py/stop_mode.pyдля низького споживання енергії, розширеного оптичного потоку та приклади лінійного/логарифмічного полярного перетворення; мікропрограма тепер аналізуєuart.iniпід час завантаження для увімкнення UART у режимі REPL.
Інші зміни та вдосконалення¶
get_regression()отримав ключові словаarea_threshold/pixels_thresholdта швидшу робастну регресію (для відстеження лінії / гонок);get_pixel()тепер підтримує зображення Bayer; додано основу для STM32H7 (заголовки CMSIS / HAL / завантажувач — плата H7 ще не готова до використання); оновлено вбудовану мікропрограму WINC1500 (19.4.4 / 19.5.2).
Виправлення помилок¶
Обробка зображень:
Виправлено вихід за межі при діамантовому пошуку в
find_template(), пошкодженняlogpolar/linpolarта некоректну поведінкуilluminvar()при значеннях кольору, близьких до нуля.
Датчик і система:
Виправлено помилки автоматичного регулювання підсилення, відновлено розмір
MAIN_FBприsnapshot()(щобcopy_to_fbз іншою роздільною здатністю, зміна розміру FB та пулінг оптичного потоку знову працювали), тайм-аутgethostbynameу WINC, очищення статусуpydfuу завантажувачі H7, а також режими низького споживання stop/standby.
Апаратне забезпечення та підтримка плат¶
STM32H7 — основа (CMSIS / HAL / завантажувач); плата OpenMV H7 ще не готова до використання в цьому випуску.
WINC1500 — оновлена вбудована мікропрограма.
Критичні зміни API¶
Видимі для користувача зміни API між v2.6.0 та v2.7.0. Область застосування: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.
Кожна зміна позначена відповідним рівнем впливу:
major (значний) — стосується більшості скриптів, що використовували функцію; потрібне портування коду.
minor (незначний) — вузький API; стосується лише скриптів, що безпосередньо його використовували.
behavior (поведінковий) — той самий API, інші результати; перевірте налаштовані скрипти.
Зміни згруповано за рівнем впливу у вказаному порядку. Якщо вам потрібно лише портувати код — перейдіть до контрольного списку міграції у кінці. Кожен хеш коміту посилається на його різницю на GitHub.
sensor.set_auto_gain() перероблено до дБ (значна)¶
sensor.set_auto_gain() більше не приймає ціле ключове слово value= і більше не повертає True / False. Використовуйте sensor.set_auto_gain(False, gain_db=...) (значення у дБ з плаваючою комою), зчитуйте його за допомогою нового sensor.get_gain_db() та загортайте виклик у try / except, оскільки при невдачі тепер генерується ValueError.
Коміти: b906c5f19
sensor.set_auto_exposure() перероблено до мікросекунд (значна)¶
sensor.set_auto_exposure() більше не приймає ціле ключове слово value= і більше не повертає True / False. Використовуйте sensor.set_auto_exposure(False, exposure_us=...), зчитуйте значення за допомогою нового sensor.get_exposure_us() та обробляйте ValueError, що генерується при невдачі.
Коміти: 7be0a7a18
find_displacement() / розміри кадрів FFT перероблено (значна)¶
Фазова кореляція була повністю перероблена. image.find_displacement() тепер повертає об’єкт зміщення (з x_translation() / y_translation() — раніше x_offset / y_offset — плюс rotation() / scale() та новими ключовими словами logpolar / fix_rotation_scale); окремий об’єкт rot-scale було видалено та додано find_rotscale(). Константи розміру кадру FFT перейменовано/видалено: sensor.B40x30 видалено повністю, а sensor.B64x32 / B64x64 перейменовано у верхній регістр sensor.B64X32 / B64X64 (з новими B128X64 / B128X128).
sensor.set_auto_whitebal() перероблено до дБ (незначна)¶
sensor.set_auto_whitebal() замінив ціле ключове слово value=[r, g, b] на rgb_gain_db=[r, g, b] (дБ з плаваючою комою) і тепер повертає None (генеруючи ValueError при невдачі) замість True / False. Для зчитування значень підсилення використовуйте новий sensor.get_rgb_gain_db().
Коміти: 30ecbdc4f
set_hmirror() / set_vflip() повертають None (незначна)¶
sensor.set_hmirror() та sensor.set_vflip() тепер повертають None та генерують ValueError при невдачі замість повернення статусу True / False. Видаліть будь-який код, що розгалужується залежно від їх повернутого значення.
Коміти: aeb023804
Інструменти мікропрограми WINC потребують шляху до файлу (незначна)¶
Інструменти мікропрограми network.WINC змінилися: wlan.fw_dump() / wlan.fw_update() тепер приймають обов’язковий аргумент із шляхом до файлу мікропрограми, а WINC відкривається у режимі програмування (network.WINC(mode=...)). Оновіть виклики без аргументів, передавши шлях (наприклад, wlan.fw_update("/winc_19_5_2.bin")).
Коміти: fcc3b0b9c
image.find_number() потребує ROI 28x28 (поведінковий)¶
image.find_number() (LeNet) тепер вимагає точно 28x28 ROI, що вміщується всередині зображення, і генерує помилку в іншому випадку (замість роботи з довільним/повним ROI зображення). Передайте явне roi=(x, y, 28, 28).
Коміти: 4d09a13f3
Знак z_rotation() тегів AprilTag змінено (поведінковий)¶
z_rotation() тегів AprilTag (та пов’язаний rotation()) тепер використовує правостороннє системне умовне позначення, тому повернутий кут має протилежний знак порівняно з попередніми випусками. Скрипти, що залежать від старого знаку, повинні інвертувати значення або скоригувати математику кутів.
Коміти: 7673aaf74
Контрольний список міграції¶
Для чистого портування до v2.7.0 типова робота включає:
Портувати
set_auto_gain()наgain_db=+get_gain_db()та оброблятиValueError(переробка автопідсилення).Портувати
set_auto_exposure()наexposure_us=+get_exposure_us()(переробка автовитримки).Оновити
find_displacement()до об’єкта зміщення та перейменувати константи розміру кадру FFT (переробка find_displacement).Портувати
set_auto_whitebal()наrgb_gain_db=+get_rgb_gain_db()(переробка балансу білого) та припинити перевіряти повернене значенняset_hmirror()/set_vflip()(зміна дзеркалювання/перевертання).Передати шлях до мікропрограми інструментам WINC
fw_*(зміна інструментів WINC).Передати
roi28x28 дляfind_number()(зміна find_number) та скоригувати математику кутів AprilTag для зміненого знакуz_rotation()(зміна z_rotation).
Усі інші скрипти працюють без змін.