v2.5.0¶
v2.5.0 — насыщенный возможностями выпуск для обработки изображений: он добавляет find_rects(), find_circles(), get_regression() (подгонка линии/регрессии), find_number() (цифры LeNet), классы потоков ImageWriter / ImageReader, sensor.flush() / width() / height() и поддержку pyb.RTC. Загрузка изображений теперь опирается на буфер кадра — прочтите о несовместимых изменениях ниже.
Основное¶
image.find_rects()— детектор прямоугольников / четырёхугольников с выводом углов.image.find_circles()— обнаружение окружностей методом Хафа.image.get_regression()— подгонка линии методом наименьших квадратов и робастным методом (Тейла-Сена).image.find_number()— распознавание цифр LeNet.ImageWriter/ImageReader— запись и воспроизведение потоков изображений.Поддержка
pyb.RTC, а такжеsensor.flush()/sensor.width()/sensor.height().Несовместимо: загрузка изображений теперь опирается на буфер кадра и вызывает исключение, если изображение слишком велико — см. несовместимые изменения.
Новые возможности¶
Обнаружение признаков — добавлены
image.find_rects()(детектор четырёхугольников AprilTag; объекты прямоугольников сx/y/w/h/corners/magnitude),image.find_circles()(Хаф),image.get_regression()(подгонка линии методом наименьших квадратов + робастным методом Тейла-Сена) иimage.find_number()(распознавание цифр LeNet), каждое с примерами скриптов.Углы результата — добавлен атрибут
cornersк объектам результата QR-кода / AprilTag / data-matrix / штрихкода.Потоки изображений — добавлены классы
image.ImageWriter/image.ImageReader(формат фрагментов с выравниванием по 16 байт) с примерамиimage_writer.py/image_reader.py.Датчик — добавлены
sensor.flush()(отправка буфера кадра в IDE без снимка) иsensor.width()/sensor.height().pyb.RTC— включена поддержка RTC с примеромrtc.py.Добавлены каскад Haar для морды кота и пример Servo-Shield (PCA9685); хост-инструмент
openmv-cascade.pyполучил поддержку нового формата каскадов OpenCV XML.
Прочие изменения и улучшения¶
Буфер кадра был переработан так, что методы изображения
copy_to_fbобновляют предпросмотр в IDE; путиHaarCascade()больше не требуют ведущего/(встроенный или файл определяется автоматически); запись GIF/MJPEG теперь поддерживает VGA (и GIF в формате BAYER); встроенныйREADME.txtобновлён, а файл драйвераopenmv.infбольше не создаётся в чистой файловой системе.
Исправления ошибок¶
Обработка изображений:
Исправлены накопление голосов
find_circles(), смещение rho вget_regression()с ROI и утечка памяти, объединение отрезков вfind_lines(), усреднение углов и цветовые границы по умолчанию (наименее ограничивающие) вfind_blobs(), стабильность сортировки ключевых точек ORB / порядок дескрипторов и флаг совпадения, а также буферизованная загрузка каскада Haar (невыровненное чтение).
Система:
Включён
pybServo 3 (P9) (#256), исправлена инициализация RTC, увеличен тайм-аут символа UART (#240) и исправлен неинициализированный флаг «enabled» буфера кадра датчика.
Поддержка оборудования и плат¶
Несовместимые изменения в API¶
Видимые пользователю несовместимости API между v2.4.1 и v2.5.0. Область: Python C-модули в modules/ и библиотеки Python в scripts/libraries/.
Несовместимое изменение является изменением поведения (тот же API, другой результат) — перепроверьте затронутые скрипты. Каждый хеш коммита ведёт на его diff на GitHub.
Загрузка изображений опирается на буфер кадра (behavior)¶
image.Image / загрузка изображения теперь копирует загруженное изображение в основной буфер кадра и вызывает исключение, если изображение слишком велико, чтобы поместиться. Загрузки, которые ранее успешно выполнялись в буфер кучи, теперь могут завершаться неудачей — убедитесь, что загружаемые изображения помещаются в буфер кадра (или обработайте новую ошибку).
Коммиты: 87d53385a
Контрольный список миграции¶
Убедитесь, что загружаемые изображения помещаются в буфер кадра (или перехватывайте новую ошибку «image too large») там, где вы ранее полагались на загрузку изображений в буфер кучи (изменение загрузки изображений). Все остальные скрипты работают без изменений.