v3.3.0¶
v3.3.0 — це великий реліз. Він додає повну підтримку теплової камери FLIR Lepton з новим інтерфейсом sensor.ioctl() і колірними палітрами, модуль відеовиводу tv через SPI, тригерний режим із глобальним затвором, великий набір нових методів малювання/аналізу image (gamma_corr(), draw_ellipse(), draw_edges(), багато властивостей плям) та нові бібліотеки для ToF / двигунів / лінійної алгебри. API cpufreq було перероблено, а sensor.set_framesize() тепер викидає виняток — читайте розділ несумісних змін нижче.
Основні можливості¶
FLIR Lepton — повна підтримка теплової камери через новий інтерфейс
sensor.ioctl(), колірні палітри таimage.to_rainbow().Модуль
tv— відеовивід через SPI / композитний відеовихід.Тригерний режим із глобальним затвором — тригерне захоплення MT9V034 через
sensor.ioctl().Зображення —
gamma_corr(),draw_ellipse(),draw_edges(), альфа-змішуванняdraw_image(), а також багато нових властивостей плям.Нові бібліотеки — драйвер датчика відстані VL53L1X ToF, драйвер двигуна TB6612, micro-linalg.
Несумісні зміни: API
cpufreqперероблено,sensor.set_framesize()тепер викидає виняток при помилці,sensor.alloc_extra_fb()більше не підтримує Bayer/JPEG, а позиційні аргументиimage.replace()змістилися — дивіться розділ несумісних змін.
Нові можливості¶
FLIR Lepton — додано
sensor.ioctl()для специфічного управління датчиком та повний набір ioctls для Lepton (радіометрія, частота оновлення/роздільна здатність, виконання команди, встановлення/отримання атрибута, температура FPA/AUX у °C, режим/діапазон вимірювань, ширина/висота),sensor.set_color_palette()/sensor.get_color_palette()з константамиsensor.PALETTE_RAINBOW/PALETTE_IRONBOW,image.to_rainbow()та приклади скриптів для Lepton (27-Lepton).Тригерний режим —
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODEдля тригерного захоплення MT9V034 із глобальним затвором, приклади з високим FPS і тригерним режимом.Модуль
tv— додано прив’язки для відеовиводу через SPI / композитний відеовихід.Зображення — додано
image.gamma_corr(),image.draw_ellipse(),image.draw_edges(), альфа-змішуванняdraw_image(), ключове словоmask=дляclear(), відновленоmask_rectangle()/mask_circle()/mask_ellipse(), ключові слова rotation / hmirror / vflip дляdraw_string()/draw_text(), ключове словоtranspose(та псевдонімиassign/set) дляreplace(),x_scale/y_scaleдляcopy()таcrop()/scale(), конструкторImage()за розмірами, піксельний форматsensor.BINARY, експортовані функції перетворення кольорового простору та багато нових властивостей плям (corners,perimeter,roundness,elongation,extent,compactness,solidity,convexity,enclosing_circle,enclosed_ellipse, обертання).Бібліотеки — додано драйвер датчика відстані
vl53l1xToF, драйвер двигунаtb6612(з прикладами DC-двигуна та кроковий Motor-Shield) та бібліотеку micro-linalg (ulinalg/umatrix).Оновлено FatFS до FF13C (з підтримкою exFAT).
Інші зміни та покращення¶
Покращено стандартну якість JPEG (середній діапазон між низьким і високим замість фіксованого значення); операції із зображенням на місці більше не вимагають повторення зображення як першого аргументу;
draw_string()приймає нецілі значення масштабу.
Виправлення помилок¶
Камера та датчики:
Виправлено зависання Lepton 3.5 під час запуску (таймаут + відновлення) та надійність скидання, порядок виклику
set_framesize()передset_pixformat()для MT9V034 (порядок більше не має значення), WVGA MT9V034 на STM32H7, діапазон автовитримки MT9V034 та оновлення тіньових регістрів, а також помилку ADC H7.
Зображення:
Виправлено недійсний доступ до пам’яті в
find_apriltags(),copy()при копіюванні масштабованого зображення до головного кадрового буфера, виділення кадрового буфераto_grayscale()/to_rgb565(),len()об’єкта ключової точки, обробку меж MCU JPEG, розбір списку порогівbinary()таdraw_keypoints()з прийняттям кортежів ключових точок.
Система:
Виправлено витоки через незбалансоване використання mark/free в
fb_allocу методахimage/fir/lcd/tv/nn, зробленоpy_assertтаким, що звільняє пам’ять кадрового буфера при перехоплених винятках (#417), очищено прапорець перевантаження UART (ORE), щоб перевантаження більше не блокували читання UART, виправлено обробник переривань RTC та інструментcascade_convert.pyдля Windows.
Апаратне забезпечення та підтримка плат¶
Теплова камера FLIR Lepton.
Щит TV — відеовивід через SPI / композитний відеовихід.
Тригерний режим із глобальним затвором (MT9V034).
Несумісні зміни API¶
Видимі користувачем несумісні зміни API між v3.2.0 та v3.3.0. Область: Python C-модулі в modules/ та Python бібліотеки в scripts/libraries/.
Кожна зміна позначена рівнем впливу:
major — стосується більшості скриптів, що використовували цю функцію; вам потрібно буде портувати код.
minor — вузький API; стосується лише скриптів, що використовували його.
behavior — той самий API, різні результати; перевірте налаштовані скрипти.
Зміни згруповані за рівнем впливу в такому порядку. Якщо вам потрібно лише портувати код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту містить посилання на його diff на GitHub.
API cpufreq перероблено (major)¶
Модуль cpufreq було перероблено для підтримки H7. Константи cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ та cpufreq.get_frequency() були видалені. cpufreq.set_frequency() тепер приймає ціле число МГц (наприклад, cpufreq.set_frequency(120)), а cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() були додані.
Коміти: 6babf84a1
Позиційні аргументи image.replace() змістилися (minor)¶
image.replace() отримав аргумент transpose, що змістило позиційний аргумент mask з позиції 4 на позицію 5. Код, який передавав mask позиційно (наприклад, img.replace(src, hmirror, vflip, mask)), має перейти на форму з ключовим словом img.replace(src, mask=mask).
Коміти: dbe7bf059
sensor.alloc_extra_fb() більше не приймає Bayer/JPEG (minor)¶
sensor.alloc_extra_fb() більше не приймає sensor.BAYER або sensor.JPEG (тепер також підтримує sensor.BINARY). Код, що виділяв додаткові кадрові буфери у форматі Bayer або JPEG, повинен використовувати GRAYSCALE / RGB565 (або виділяти буфер іншим способом).
Коміти: f9e6b3fe0
sensor.set_framesize() викидає виняток при помилці (behavior)¶
sensor.set_framesize() тепер викидає ValueError, якщо розмір кадру не підтримується, замість повернення False. Код, що перевіряв повернення False, має замість цього перехоплювати виняток ValueError.
Коміти: b0442633e
Контрольний список міграції¶
Для чистого портування на v3.3.0 типова робота включає:
Портування коду
cpufreqна цілочисельний МГцset_frequency()таget_current_frequencies()/get_supported_frequencies()(переробка cpufreq).Передача
maskдоimage.replace()як ключового слова (зміна replace).Виділення додаткових кадрових буферів як
GRAYSCALE/RGB565замість Bayer/JPEG (зміна alloc_extra_fb).Перехоплення
ValueErrorнавколоsensor.set_framesize()замість перевірки наFalse(зміна set_framesize).
Всі інші скрипти виконуються без змін.