v3.6.4

v3.6.4 dodaje bibliotekę serwera wideo RTSP, w pełni naprawia tryby obrazowania OV5640 (Grayscale / RGB565 / Bayer / JPEG w każdej rozdzielczości), podwaja FPS sensora dzięki zoptymalizowanemu sterownikowi i naprawia partię błędów kodowania Bayer / JPEG. Zmieniło się image.get_pixel() na obrazach Bayer oraz automatyczny obrót sensora — przeczytaj poniższe zmiany łamiące zgodność.

Najważniejsze zmiany

  • RTSP — nowa biblioteka serwera wideo RTSP wraz z przykładem.

  • OV5640 — Grayscale / RGB565 / Bayer / JPEG działają teraz we wszystkich rozdzielczościach, z większym maksymalnym transferem JPEG i podwojonym odczytem wysokiej rozdzielczości.

  • Podwójny FPS — sterownik sensora został zoptymalizowany pod ~2× liczbę ramek na sekundę.

  • Poprawki — Bayer edge/vflip, programowy JPEG (1-bpp oraz skala szarości YCbCr) oraz problemy z przepełnieniem bufora.

  • Zmiana łamiąca zgodność: image.get_pixel() debayeruje teraz obrazy Bayer, a automatyczny obrót jest teraz ponownie stosowany przy sensor.reset() — zobacz zmiany łamiące zgodność.

Nowe funkcje

  • RTSP — dodano bibliotekę rtsp oraz przykład rtsp_video_server.py do strumieniowania wideo RTSP.

Pozostałe zmiany i ulepszenia

  • Zoptymalizowano sterownik sensora pod mniej więcej dwukrotnie wyższą liczbę ramek na sekundę, podwojono odczyt wysokiej rozdzielczości OV5640 dla Bayer/Grayscale/JPEG, zwiększono maksymalny rozmiar transferu obrazu JPEG oraz zaktualizowano cascade_convert.py do współpracy z Pythonem 3.

Poprawki błędów

Kamera i obrazowanie:

  • Naprawiono tryby obrazowania OV5640, tak aby Grayscale / RGB565 / Bayer / JPEG działały poprawnie we wszystkich rozdzielczościach, Bayer vflip na OV7725 / OV7690, błąd konwersji Bayer przy prawej krawędzi, programowe kodowanie JPEG obrazów 1-bpp oraz skali szarości YCbCr (odejmowanie −128), nadmiarowe dane na obrazach JPEG oraz problemy z przepełnieniem bufora.

Zmiany API łamiące zgodność

Widoczne dla użytkownika zmiany API łamiące zgodność między v3.6.3 a v3.6.4. Zakres: moduły C w Pythonie w modules/ oraz biblioteki Pythona w scripts/libraries/.

Obie zmiany łamiące zgodność to zmiany behavior (to samo API, inne wyniki) — sprawdź ponownie dotknięte skrypty. Każdy hash commita prowadzi do jego diffa na GitHubie.

image.get_pixel() debayeruje obrazy Bayer (behavior)

image.get_pixel() na obrazie w formacie Bayer debayeruje teraz i zwraca krotkę (r, g, b) zamiast surowej jednokanałowej wartości Bayer. Skrypty odczytujące surowe wartości Bayer przez get_pixel() będą teraz otrzymywać interpolowane krotki RGB i muszą zostać zaktualizowane.

Commity: bf16b6a4f

Automatyczny obrót ponownie stosowany przy sensor.reset() (behavior)

Automatyczny obrót sensora jest teraz (ponownie) wyzwalany przy sensor.reset(). Skrypty, które wywoływały sensor.reset() po skonfigurowaniu orientacji, oczekując, że stan obrotu zostanie zachowany lub nie zostanie ponownie zastosowany, mogą zobaczyć inną orientację i powinny zostać ponownie sprawdzone.

Commity: 0d13a214b

Lista kontrolna migracji

Zaktualizuj kod odczytujący surowe wartości Bayer przez image.get_pixel(), aby oczekiwał krotki (r, g, b) (zmiana get_pixel) oraz sprawdź ponownie orientację sensora w okolicy sensor.reset() (zmiana automatycznego obrotu). Wszystkie pozostałe skrypty działają bez zmian.