v2.8.0¶
v2.8.0 — это масштабный выпуск. Он запускает OpenMV Cam H7 (STM32H7) с аппаратным кодировщиком JPEG и H7 ADC/DAC, проводит огромную переработку API image (толщина/заливка при рисовании, математические/двоичные операции, множество новых фильтров, пороговая обработка Otsu), многопоточность MicroPython и модуль версии omv. Порядок разбора аргументов Python был зафиксирован, а image.mask_ellipse() удалён — прочитайте раздел об изменениях, нарушающих совместимость, ниже.
Основные изменения¶
OpenMV Cam H7 — новая плата STM32H7 с аппаратным кодировщиком JPEG и H7 ADC / DAC.
Переработка
image— толщина линий, заливка фигур,draw_arrow()/draw_image(), полный набор математических/двоичных операций и множество новых фильтров.Пороговая обработка Otsu —
histogram.get_threshold()и объектThreshold.Многопоточность — поддержка
_threadв MicroPython.Модуль
omv— информация о версии / плате.Нарушает совместимость: порядок позиционных аргументов Python теперь строгий, а
image.mask_ellipse()удалён — см. раздел об изменениях, нарушающих совместимость.
Новые возможности¶
OpenMV Cam H7 — поддержка платы STM32H7 с аппаратным кодировщиком JPEG, H7 ADC и H7 DAC.
Рисование — добавлены толщина линии
thickness, заливка фигурfill(прямоугольник / окружность), масштаб текстаscale/ кернинг, именованный аргументmono_spaceвdraw_string(),image.draw_arrow()иimage.draw_image()(рисование спрайтов / масок).Математические операции — добавлены
add(),sub(),mul(),div(),min(),max(),difference(),blend(),replace()(сhmirror/vflip/mask) иremove_shadows(); базовые операции теперь принимают скалярное значение/цвет, применяемое ко всем пикселям.Двоичные / морфологические операции — новый двоичный тип изображения и
binary(); линейные операции иerode()/dilate()принимают маски; добавленыopen()/close()/top_hat()/black_hat().Фильтры — добавлены
cartoon,flood_fill,bilateral,laplacian, псевдонимыblur/gaussian_blurи адаптивное выравнивание гистограммы (histeq(adaptive=, clip_limit=, mask=)).Статистика —
get_statistics()/get_histogram()принимают список порогов цвета иinvert; добавленыhistogram.get_threshold()по Otsu и объектThreshold.CMSIS CNN — добавлен
image.classify_object()с примеромcnn.py(заменён модулемnnв v3.0.0).Многопоточность — включён модуль
_threadв MicroPython.Модуль
omv— добавлена информация о версии (version_string,arch,board_type,board_id); включены шина I2C4 модуляmachineи специальные математические функции (erf,gamma, …); добавлены примеры motor-shield и множество новых примеров скриптов.
Прочие изменения и улучшения¶
Внешняя тактовая частота датчика H7 была снижена до 48 МГц (лучшее качество изображения, меньший FPS); низкое/высокое качество JPEG теперь настраивается на уровне платы (и отлажено для H7); добавлено гейтирование функций по платам через
imlib_config.h(все функции обработки изображений остаются включёнными в стоковой прошивке); обновлён встроенный MicroPython.
Исправления ошибок¶
Обработка изображений:
Исправлены:
image.save()без расширения файла, отображениеgain_db/gain_db_ceilingдля OV2640 / OV7725 / OV9650 / MT9V034, чрезмерное усиление вsharpen(), краевой шум при морфологии, деление на ноль в операции над изображением и аварийное переполнение стека при слишком большом размере ядра фильтра (теперь — корректная ошибка).
Система:
Защищён буфер USB VCP атомарной секцией (повреждение данных по последовательному порту, #313), исправлены: связь по USB в Windows, монтирование внутренней файловой системы во флеш-памяти при сбое SD-карты, значение PLLP в
cpufreqset_frequency()и ошибка прошивки прошивки в загрузчике.
Поддержка оборудования и плат¶
OpenMV Cam H7 (STM32H7) — новая плата с аппаратным кодировщиком JPEG и H7 ADC / DAC.
machine— включена шина I2C4.
Изменения API, нарушающие совместимость¶
Видимые пользователю изменения API между v2.7.0 и v2.8.0. Область: Python C-модули в modules/ и библиотеки Python в scripts/libraries/.
Оба изменения, нарушающих совместимость, относятся к категории minor и затрагивают только скрипты, использовавшие соответствующую возможность. Каждый хэш коммита ведёт к его diff на GitHub.
Порядок позиционных аргументов Python теперь строгий (minor)¶
Разбор аргументов во всех Python C-модулях (image / sensor / fir / gif / lcd / mjpeg) теперь читает позиционные аргументы перед именованными и фиксирует порядок позиционных. В сочетании с новыми именованными аргументами в методах рисования (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() получили thickness / fill / scale / size), код, передававший параметры позиционно в неправильном порядке — или передававший позиционный color после одного из новых аргументов — должен использовать именованные аргументы или документированный позиционный порядок.
image.mask_ellipse() удалён (minor)¶
image.mask_ellipse() был удалён. Скрипты, вызывавшие его, должны убрать вызов или использовать вместо него явную ROI / изображение-маску.
Коммиты: d7159fba3
Контрольный список миграции¶
Передавайте аргументы по имени (или в документированном позиционном порядке), особенно color в методах рисования (изменение порядка аргументов), и удалите вызовы image.mask_ellipse() (удаление mask_ellipse). Все остальные скрипты работают без изменений.