v1.4.0¶
v1.4.0 — это основополагающая реорганизация imlib. find_blobs() / find_markers() были переписаны для прямого отслеживания по цветовому порогу, многие отдельные методы изображения были свернуты в кортежи блобов, а несколько методов изображения были переименованы (subimg → copy, blit → replace, find_eyes → find_eye, compress → compressed). Также добавлены sensor.get_fb() / переключатели AGC / AEC и ~60 примеров скриптов. Это выпуск с большим количеством критических изменений — ознакомьтесь с критическими изменениями ниже.
Основные моменты¶
Отслеживание блобов на основе цвета —
find_blobs()принимает цветовые пороги напрямую и возвращает плоский список кортежей блобов.Очистка imlib —
subimg()→copy(),blit()→replace(),find_eyes()→find_eye(),compress()→compressed().Датчик — добавлены
sensor.get_fb()и переключатели включения AGC/AEC.Добавлены/расширены ~60 примеров скриптов.
Критическое: API блобов, удаленные методы изображения и несколько переименований — см. критические изменения.
Новые возможности¶
Датчик — добавлены
sensor.get_fb()(получить буфер кадра последнего снимка),sensor.set_gain_ctrl(enable)(переключение AGC) иsensor.set_exposure_ctrl(enable)(переключение AEC).Изображение — индексация изображения (
img[i]) теперь поддерживает как чтение, так и запись пикселей (grayscale / RGB565 / JPEG); добавленыimage.compress()с обработкой на месте и именованный аргументquality=в функциях JPEG;find_blobs()/find_markers()/find_features()теперь возвращают пустой (итерируемый) список вместо нелиста, когда ничего не найдено.Добавлены ~60 примеров скриптов (управление платой, фильтры изображения, отслеживание цвета, обнаружение лиц / глаз / признаков, WiFi-шилд) и второй пример обнаружения радужки.
Прочие изменения и улучшения¶
image.histeq()теперь работает с изображениями RGB565, а не только в оттенках серого.
Исправления ошибок¶
Инициализирован
pyb.DACпри загрузке, чтобы DAC работал (#121), исправлен сломанныйimage.dilate(), повреждение при нулевом числе байт вclient.send()WINC, повторная итерация при слиянии блобов, ошибка повторной инициализации файлового буфера, ломавшая файловую систему после первого использования, вычислениеTo_min/To_maxтермопары (#113), а также применен апстрим-патч HAL I2C/DMA из MicroPython.
Аппаратное обеспечение и поддержка плат¶
WiFi-шилд — WINC1500 обновлен до файлов платы Rev-B.
pyb.DAC— периферийное устройство DAC включено.
Критические изменения API¶
Видимые пользователю изменения API между v1.3.0 и v1.4.0. Область: C-модули Python в modules/ и библиотеки Python в scripts/libraries/.
Каждое изменение помечено его влиянием:
major — затрагивает большинство скриптов, использовавших эту функцию; вам потребуется портировать код.
minor — узкий API; затрагивает только использовавшие его скрипты.
Изменения сгруппированы по влиянию в этом порядке. Если вы просто хотите портировать свой код, перейдите к контрольному списку миграции в конце. Каждый хеш коммита ведет на его diff на GitHub.
find_blobs() / find_markers() переписаны (major)¶
image.find_blobs() / find_markers() были переписаны для отслеживания на основе цвета: теперь вы передаете цветовые пороги (и необязательную функцию-фильтр) напрямую, вместо работы над предварительно сегментированным изображением, а результат — это единый плоский список кортежей блобов из 10 элементов (с полем цветового кода) вместо вложенного дерева по цветам. Переработайте скрипты отслеживания цвета, чтобы передавать цветовые пороги и итерировать плоский список.
Отдельные методы изображения удалены (major)¶
image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() и image.pixels() были удалены. Данные центроида / ориентации / счетчика пикселей теперь доступны как поля кортежей блобов, возвращаемых find_blobs().
Коммиты: 9e5d379c1
Переименования методов imlib (major)¶
Несколько методов изображения были переименованы/переработаны: image.subimg() → image.copy(), image.blit() → image.replace(), а image.blend() был изменен для соответствия двум другим операциям с двумя изображениями. Методы image.scale() / scaled() / rainbow() были удалены (rainbow перенесен в модуль FIR). Обновите вызовы на новые имена.
Коммиты: b534dc6ff
find_eyes() переименован в find_eye() (minor)¶
image.find_eyes() был переименован в image.find_eye() и теперь возвращает 2-кортеж радужки (x, y) вместо прежнего кортежа глаз. Переименуйте вызов и обновите обработку возвращаемого значения.
Коммиты: 7a01a9bed
image.compress() переименован в compressed() (minor)¶
image.compress() (который возвращал новое изображение JPEG) был переименован в image.compressed(); новый image.compress() вместо этого сжимает изображение на месте и возвращает None. image.save() также получил именованный аргумент quality= и теперь возвращает None вместо True. Перенесите img.compress(q) (ожидающий возвращаемого изображения) на img.compressed(quality=q).
Коммиты: 367e5fdd3
Контрольный список миграции¶
Для чистого переноса на v1.4.0 типичная работа такова:
Переработайте код отслеживания цвета, чтобы передавать цветовые пороги в
find_blobs()/find_markers()и итерировать плоский список кортежей блобов (переработка find_blobs).Читайте данные центроида / ориентации / пикселей из кортежей блобов вместо удаленных отдельных методов (удаленные методы изображения).
Переименуйте
subimg→copy,blit→replace, исправьте вызовыblend()и заменитеscale/scaled/rainbow(переименования imlib).Переименуйте
find_eyes()→find_eye()(переименование find_eye) иcompress()→compressed()(переименование compress).
Все остальные скрипты работают без изменений.