v2.5.0¶
v2.5.0 to bogate w funkcje wydanie dotyczące przetwarzania obrazu: dodaje find_rects(), find_circles(), get_regression() (dopasowanie linii/regresji), find_number() (cyfry LeNet), klasy strumieniowe ImageWriter / ImageReader, sensor.flush() / width() / height() oraz obsługę pyb.RTC. Ładowanie obrazu jest teraz oparte na framebufferze — przeczytaj poniżej o zmianach łamiących.
Najważniejsze zmiany¶
image.find_rects()— detektor prostokątów / czworokątów z wyjściem narożników.image.find_circles()— wykrywanie okręgów metodą Hougha.image.get_regression()— dopasowanie linii metodą najmniejszych kwadratów oraz odporne (Theil-Sen).image.find_number()— rozpoznawanie cyfr LeNet.ImageWriter/ImageReader— nagrywanie i odtwarzanie strumieni obrazu.Obsługa
pyb.RTC, a takżesensor.flush()/sensor.width()/sensor.height().Zmiana łamiąca: ładowanie obrazu jest teraz oparte na framebufferze i zgłasza błąd, jeśli obraz jest zbyt duży — zobacz zmiany łamiące.
Nowe funkcje¶
Wykrywanie cech — dodano
image.find_rects()(detektor czworokątów AprilTag; obiekty rect zx/y/w/h/corners/magnitude),image.find_circles()(Hough),image.get_regression()(dopasowanie linii metodą najmniejszych kwadratów + odporne Theil-Sen) orazimage.find_number()(rozpoznawanie cyfr LeNet), każdy z przykładowymi skryptami.Narożniki wyników — dodano atrybut
cornersdo obiektów wyniku kodów QR / AprilTag / data matrix / kodów kreskowych.Strumienie obrazu — dodano klasy
image.ImageWriter/image.ImageReader(format fragmentów wyrównanych do 16 bajtów) z przykładamiimage_writer.py/image_reader.py.Sensor — dodano
sensor.flush()(przesłanie framebuffera do IDE bez zrzutu obrazu) orazsensor.width()/sensor.height().pyb.RTC— włączono obsługę RTC z przykłademrtc.py.Dodano kaskadę Haara dla pyska kota oraz przykład Servo-Shield (PCA9685); narzędzie hostowe
openmv-cascade.pyzyskało obsługę nowego formatu kaskad OpenCV XML.
Pozostałe zmiany i usprawnienia¶
Framebuffer został przebudowany, dzięki czemu metody obrazu
copy_to_fbaktualizują podgląd w IDE; ścieżkiHaarCascade()nie wymagają już początkowego/(wbudowana vs. plik jest wykrywana automatycznie); nagrywanie GIF/MJPEG obsługuje teraz VGA (oraz GIF-y BAYER); zaktualizowano wbudowanyREADME.txt, a plik sterownikaopenmv.infnie jest już tworzony na świeżym systemie plików.
Poprawki błędów¶
Przetwarzanie obrazu:
Naprawiono akumulację głosów w
find_circles(), przesunięcie rho wget_regression()przy ROI oraz wyciek pamięci, scalanie odcinków wfind_lines(), uśrednianie kątów wfind_blobs()i domyślne (najmniej restrykcyjne) granice kolorów, stabilność sortowania punktów kluczowych ORB / kolejność deskryptorów oraz flagę dopasowania, a także buforowane ładowanie kaskady Haara (niewyrównane odczyty).
System:
Włączono
pybServo 3 (P9) (#256), naprawiono inicjalizację RTC, zwiększono limit czasu znaku UART (#240) oraz naprawiono niezainicjalizowaną flagę „enabled” framebuffera sensora.
Sprzęt i obsługa płytek¶
Zmiany łamiące API¶
Widoczne dla użytkownika zmiany łamiące API między v2.4.1 a v2.5.0. Zakres: moduły C Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.
Zmiana łamiąca to zmiana behavior (to samo API, inny wynik) — sprawdź ponownie dotknięte skrypty. Każdy skrót commita prowadzi do jego diffa na GitHubie.
Ładowanie obrazu jest oparte na framebufferze (behavior)¶
image.Image / ładowanie obrazu kopiuje teraz załadowany obraz do głównego framebuffera i zgłasza wyjątek, jeśli obraz jest zbyt duży, aby się zmieścić. Ładowania, które wcześniej kończyły się powodzeniem do bufora sterty, mogą teraz zawieść — upewnij się, że ładowane obrazy mieszczą się w framebufferze (lub obsłuż nowy błąd).
Commity: 87d53385a
Lista kontrolna migracji¶
Upewnij się, że ładowane obrazy mieszczą się w framebufferze (lub przechwyć nowy błąd „image too large”) tam, gdzie wcześniej polegałeś na ładowaniu obrazów opartym na stercie (zmiana ładowania obrazu). Wszystkie pozostałe skrypty działają bez zmian.