v1.4.0

v1.4.0 — це базова реорганізація imlib. find_blobs() / find_markers() були переписані для прямого відстеження по кольоровому порогу, багато окремих методів зображень об’єднано в кортежі плям, а кілька методів перейменовано (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). Також додано sensor.get_fb() / перемикачі AGC / AEC та ~60 прикладів скриптів. Це реліз із численними критичними змінами — ознайомтеся з ними нижче.

Основні можливості

  • Відстеження плям по кольоруfind_blobs() приймає кольорові пороги безпосередньо та повертає плаский список кортежів плям.

  • Очищення imlibsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Sensor — додано sensor.get_fb() та перемикачі AGC/AEC.

  • Додано/розширено ~60 прикладів скриптів.

  • Критична зміна: API плям, видалені методи зображень та кілька перейменувань — перегляньте критичні зміни.

Нові можливості

  • Sensor — додано sensor.get_fb() (отримання останнього кадрового буфера знімка), sensor.set_gain_ctrl(enable) (перемикач AGC) та sensor.set_exposure_ctrl(enable) (перемикач AEC).

  • Image — індексний доступ до зображень (img[i]) тепер підтримує читання та запис пікселів (відтінки сірого / 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), а також застосовано оновлення I2C/DMA HAL MicroPython від upstream.

Апаратне забезпечення та підтримка плат

  • 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 елементів (з полем кольорового коду) замість вкладеного дерева по кольору. Переробіть скрипти відстеження кольору, щоб передавати кольорові пороги та ітерувати плаский список.

Коміти: d1ff36602, 16daeb83a

Окремі методи зображень видалено (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 зазвичай потрібно:

  1. Переробити код відстеження кольору, щоб передавати кольорові пороги до find_blobs() / find_markers() та ітерувати плаский список кортежів плям (переписання find_blobs).

  2. Читати дані центроїда / орієнтації / пікселів із кортежів плям замість видалених окремих методів (видалені методи зображень).

  3. Перейменувати subimgcopy, blitreplace, виправити виклики blend() та замінити scale / scaled / rainbow (перейменування imlib).

  4. Перейменувати find_eyes()find_eye() (перейменування find_eye) та compress()compressed() (перейменування compress).

Всі інші скрипти працюють без змін.