v3.6.0

v3.6.0 wprowadza pełną obsługę kamery OV5640 5 MP z nowymi rozdzielczościami wysokiej jakości (HD / FHD / QHD / QXGA / WQXGA), aktualizuje rdzeń do MicroPython 1.12, mocno optymalizuje programowy enkoder JPEG oraz wykrywanie AprilTag / linii, dodaje UVC (USB video) na OpenMV Cam H7 Plus oraz obsługuje pamięć flash QSPI do 32 MB. Zmieniono zachowanie MicroPython i get_histogram() — przeczytaj poniższe zmiany łamiące.

Najważniejsze zmiany

  • OV5640 5 MP — pełny sterownik kamery z nowymi rozdzielczościami HD / FHD / QHD / QXGA / WQXGA / WQXGA2.

  • MicroPython 1.12 — zaktualizowano dołączony rdzeń.

  • Szybszy potok — mocno zoptymalizowane programowe kodowanie JPEG, wykrywanie AprilTag, wykrywanie linii LSD, histeq() oraz dekodowanie kodów QR.

  • UVC na H7 Plus — OpenMV Cam H7 Plus może działać jako urządzenie wideo USB.

  • Zmiana łamiąca: zmieniono zachowanie MicroPython, normalizację image.get_histogram() oraz wyjście JPEG/skali szarości na OpenMV 3 — zobacz zmiany łamiące.

Nowe funkcje

  • OV5640 — dodano pełną obsługę kamery OV5640 5 MP (konfiguracja zegara zewnętrznego w inicjalizacji sensora) oraz nowe stałe rozdzielczości sensor.HD / FHD / QHD / QXGA / WQXGA / WQXGA2.

  • TIM4 — zwolniony, aby był dostępny z poziomu MicroPython.

  • Dodano przykład czasowego zapisu DAC (dac_write_timed.py) oraz zmieniono nazwę dac_control.py na dac_write.py.

Pozostałe zmiany i usprawnienia

  • Zaktualizowano dołączony MicroPython do 1.12; mocno zoptymalizowano programowy enkoder JPEG (ścieżka VGA, ścieżki skali szarości/binarne, arytmetyka całkowitoliczbowa zamiast zmiennoprzecinkowej, zoptymalizowane przechwytywanie MCU), LSD find_line_segments(), wykrywanie AprilTag, Image.histeq() oraz konwersję kodów QR / RGB-do-szarości; dodano obsługę pamięci flash QSPI dla układów do 32 MB; usunięto przestarzały przykład CMSIS-CNN cnn.py.

Poprawki błędów

Kamera i obrazowanie:

  • Naprawiono uszkodzenie kodowania JPEG przy HQQQVGA, kompresję binarnego (1-bitowego) obrazu → JPEG, regresję find_line_segments() (ponownie włączono sprawdzanie niewyrównane NOTDEF) oraz drobne problemy ze sterownikiem OV2640.

System i rozruch:

  • Naprawiono uszkodzenie autotestu / systemu plików (selftest.py jest teraz uruchamiany przed włączeniem USB MSC, a USB MSC jest włączane przy błędzie krytycznym, aby host mógł odczytać dziennik błędów), write_timed() w pyb.DAC, czasy machine.I2C H7, ponowne włączanie overdrive F7 po trybie stop oraz interwał rtc.wakeup() w stop_mode.py.

Sprzęt i obsługa płytek

  • OV5640 — pełny sterownik kamery 5 MP z rozdzielczościami wysokiej jakości.

  • OpenMV Cam H7 Plus — obsługa UVC (USB video); cel kompilacji płytki OPENMV4R zmieniono na OPENMV4P.

  • Pamięć flash QSPI — obsługiwane są teraz układy do 32 MB.

Zmiany łamiące API

Widoczne dla użytkownika zmiany łamiące API pomiędzy v3.5.2 a v3.6.0. Zakres: moduły C języka Python w modules/ oraz biblioteki Python w scripts/libraries/.

Wszystkie trzy zmiany łamiące to zmiany zachowania (to samo API, inne wyniki) — sprawdź ponownie odpowiednie skrypty. Każdy hash commitu prowadzi do jego diffa na GitHub.

Zaktualizowano MicroPython do 1.12 (zachowanie)

Dołączony rdzeń MicroPython został zaktualizowany do 1.12. Zachowanie biblioteki standardowej i języka jest zgodne z oryginalnym MicroPython 1.12; sprawdź ponownie skrypty, które zależą od specyficznego dla wersji zachowania micropython / modułów standardowych.

Commity: eafd431ea

Zmieniono normalizację progów image.get_histogram() (zachowanie)

image.get_histogram() (oraz get_statistics()) z progami koloru normalizuje teraz względem liczby pikseli spełniających próg, a nie całego ROI, oraz używa zaokrąglenia w dół zamiast zwykłego zaokrąglenia przy indeksowaniu przedziałów. Wartości histogramu/statystyk dla wywołań z progami różnią się od poprzednich wydań — przestrój kod, który porównywał je z bezwzględnymi wartościami histogramu.

Commity: 7cf0f8089

Zmieniono wyjście JPEG/skali szarości na OpenMV 3 (zachowanie)

Aby zaoszczędzić pamięć flash, tabela odnośników YUV na OpenMV 3 (M7) została wyłączona, więc wartości pikseli wyjściowych JPEG i skali szarości są na OpenMV 3 obliczane nieco inaczej. Wyjście jest nadal poprawne, ale różni się minimalnie od poprzednich wydań; sprawdź ponownie porównania na poziomie dokładności pikseli na OpenMV 3.

Commity: 0e4b46e41

Lista kontrolna migracji

Ponownie zweryfikuj skrypty, które zależą od specyficznego dla wersji zachowania MicroPython, względem 1.12 (aktualizacja MicroPython), przestrój kod, który porównywał je z bezwzględnymi wartościami get_histogram() / get_statistics() przy używaniu progów koloru (zmiana histogramu) oraz sprawdź ponownie porównania na poziomie dokładności pikseli na OpenMV 3 (zmiana wyjścia OpenMV 3). Wszystkie pozostałe skrypty działają bez zmian.