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 край/vflip, программный JPEG (1-bpp и YCbCr-оттенки серого) и проблемы переполнения буфера.

  • Несовместимое изменение: image.get_pixel() теперь дебайеризует изображения 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-оттенков серого (вычитание −128), хвостовые данные в JPEG-изображениях и проблемы переполнения буфера.

Несовместимые изменения API

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

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

image.get_pixel() дебайеризует изображения Bayer (behavior)

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

Коммиты: bf16b6a4f

Автоповорот повторно применяется при sensor.reset() (behavior)

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

Коммиты: 0d13a214b

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

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