v3.6.4

v3.6.4 додає бібліотеку RTSP відео-сервера, повністю виправляє режими зображення OV5640 (Grayscale / RGB565 / Bayer / JPEG при будь-якій роздільній здатності), подвоює FPS датчика за рахунок оптимізованого драйвера, та виправляє пакет помилок кодування Bayer / JPEG. image.get_pixel() на зображеннях Bayer та автообертання датчика змінено — ознайомтеся зі змінами, що порушують зворотну сумісність.

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

  • RTSP — нова бібліотека RTSP відео-сервера з прикладом.

  • OV5640 — Grayscale / RGB565 / Bayer / JPEG тепер працюють при всіх роздільних здатностях, з більшим максимальним розміром передачі JPEG та подвоєним зчитуванням у високій роздільній здатності.

  • Подвоєний FPS — драйвер датчика оптимізовано для ~2× частоти кадрів.

  • Виправлення — Bayer edge/vflip, програмний JPEG (1-bpp та YCbCr grayscale), та проблеми переповнення буфера.

  • Несумісні зміни: image.get_pixel() тепер деbayerує зображення Bayer, а автообертання тепер повторно застосовується при sensor.reset() — дивіться зміни, що порушують сумісність.

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

  • RTSP — додано бібліотеку rtsp та приклад rtsp_video_server.py для RTSP відеотрансляції.

Інші зміни та вдосконалення

  • Оптимізовано драйвер датчика приблизно для подвоєння частоти кадрів, подвоєно зчитування OV5640 у високій роздільній здатності для Bayer/Grayscale/JPEG, збільшено максимальний розмір передачі JPEG, та оновлено cascade_convert.py для роботи з Python 3.

Виправлення помилок

Камера та обробка зображень:

  • Виправлено режими зображення OV5640, щоб Grayscale / RGB565 / Bayer / JPEG коректно працювали при всіх роздільних здатностях, Bayer vflip на OV7725 / OV7690, помилку перетворення Bayer на правому краї, програмне JPEG-кодування 1-bpp зображень та YCbCr grayscale (віднімання −128), кінцеві дані на JPEG-зображеннях, та проблеми переповнення буфера.

Несумісні зміни API

Зміни API, помітні для користувача, між v3.6.3 та v3.6.4. Область застосування: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.

Обидві несумісні зміни є поведінковими (той самий API, різні результати) — перевірте відповідні скрипти. Кожен хеш коміту веде до його diff на GitHub.

image.get_pixel() деbayerує зображення Bayer (поведінковий)

image.get_pixel() на зображенні у форматі Bayer тепер деbayerує та повертає кортеж (r, g, b) замість необробленого однокомпонентного значення Bayer. Скрипти, що зчитували необроблені значення Bayer через get_pixel(), тепер отримуватимуть інтерпольовані RGB-кортежі та мають бути оновлені.

Коміти: bf16b6a4f

Автообертання повторно застосовується при sensor.reset() (поведінковий)

Автообертання датчика тепер (повторно) запускається при sensor.reset(). Скрипти, що викликали sensor.reset() після налаштування орієнтації, очікуючи збереження стану обертання або його незастосування, можуть отримати іншу орієнтацію та мають бути перевірені.

Коміти: 0d13a214b

Контрольний список міграції

Оновіть код, що зчитував необроблені значення Bayer через image.get_pixel(), для очікування кортежу (r, g, b) (зміна get_pixel), та перевірте орієнтацію датчика навколо sensor.reset() (зміна автообертання). Усі інші скрипти працюють без змін.