OpenCV 5.0.0

Opublikowano OpenCV 5.0.0 — to duża aktualizacja otwartej biblioteki do widzenia komputerowego i przetwarzania obrazów. Wydanie miało miejsce 6 czerwca 2026 roku i zostało już uznane za aktualne w repozytorium projektu na GitHubie. OpenCV jest rozpowszechniane na licencji Apache-2.0.

Główna idea wydania polega na przejściu OpenCV z „klasycznej biblioteki widzenia komputerowego” na nowoczesną platformę do zadań CV/AI: projekt oczyścił stare API, przekształcił moduł wnioskowania sieci neuronowych, rozszerzył wsparcie dla ONNX, przygotował podwaliny dla scenariuszy VLM/LLM i zaktualizował stos 3D/kalibracyjny. Programiści opisują OpenCV 5.0 jako gałąź, która teraz również uznawana jest za stabilną, a nowa funkcjonalność będzie trafiać głównie tam.

Główne zmiany

  • Nowy silnik wnioskowania DNN.
    W module dnn pojawił się nowy silnik, który współistnieje ze starym. Lepiej radzi sobie z dynamicznymi formami tensorów, podgrafami i nowoczesnymi możliwościami ONNX. Zgłoszono pokrycie ponad 80% specyfikacji ONNX, podczas gdy w OpenCV 4.x pokrycie wynosiło mniej niż 23%.
    To prawdopodobnie najważniejsza zmiana w wydaniu: OpenCV stara się stać nie tylko oprawą dla modeli, ale pełnoprawnym wbudowanym silnikiem wnioskowania dla nowoczesnych sieci neuronowych.

  • Wybór silnika przy ładowaniu modelu.
    W cv::dnn::readNet() i pokrewnych funkcjach pojawił się parametr ENGINE_AUTO. Domyślnie OpenCV najpierw próbuje nowego silnika, a w przypadku niepowodzenia przechodzi na klasyczny. Zachowanie to można także ustawić za pomocą zmiennej środowiskowej OPENCV_FORCE_DNN_ENGINE: używaj starego silnika, nowego, automatycznego trybu lub ONNX Runtime. Stare projekty nie muszą od razu w pełni przechodzić na nowy silnik, ale nowe modele można stopniowo na niego przekładać.

  • Integracja z ONNX Runtime.
    OpenCV można teraz skompilować z włączonym ONNX Runtime. W tym przypadku OpenCV używa własnego parsera ONNX do budowania grafu ORT, więc nie wymaga pełnego pakietu ONNX. Do kompilacji przewidziano parametry CMake -DWITH_ONNXRUNTIME=ON i -DDOWNLOAD_ONNXRUNTIME=ON; dla GPU NVIDIA — -DDOWNLOAD_ONNXRUNTIME_GPU=ON. Funkcja ta będzie przydatna dla tych, którzy potrzebują wnioskowania GPU już teraz, ponieważ nowy silnik DNN OpenCV działa aktualnie tylko na CPU.

  • Wsparcie dla modeli zamieniających wizję na język.
    Nowy silnik DNN zawiera tokenizatory, warstwy uwagi, bloki dekodujące, postprocessing oraz pamięć KV, które są niezbędne do uruchamiania modeli VLM "prosto z pudełka". Biblioteka historycznie kojarzona była z przetwarzaniem obrazów, a teraz wkracza w obszar modeli, które jednocześnie pracują z obrazem i tekstem.

  • Wsparcie GPU w nowym silniku DNN nie jest jeszcze gotowe.
    Nowy silnik w OpenCV 5.0 działa tylko na CPU. Natywne wsparcie dla GPU ma zostać dodane w kolejnych wydaniach; na razie dla GPU zaleca się korzystanie z klasycznego silnika lub wersji z ONNX Runtime i dostawcami wykonawczymi NVIDIA. Dla serwerowego lub desktopowego CUDA inference, OpenCV 5.0 samodzielnie jeszcze nie zastępuje specjalizowanych runtime'ów.

  • Usunięto stare parsery Darknet i Caffe.
    Programiści usunęli parsery Darknet i Caffe, ponieważ większość modeli została już przetłumaczona do ONNX. TFLite pozostaje dostępne przez klasyczny silnik, a migracja na nowy silnik zaplanowana jest na później. OpenCV rezygnuje ze starych formatów, koncentrując się na ONNX jako głównym formacie wymiany modeli.

  • Duża czyszczenie przestarzałego API.
    Usunięto C API OpenCV 1.x: funkcje takie jak cvCreateMat() i stare struktury typu CvMat nie są już częścią głównego API. Usunięto także wsparcie dla OpenVX, a moduł G-API został przeniesiony do opencv_contrib, gdzie trafił również klasyczny moduł ML. To przełomowa zmiana dla starych projektów, ale była długo oczekiwana: biblioteka pozbywa się zaległości technicznych, które gromadziły się przez dziesięciolecia.

  • Features2D został przemianowany na Features.
    Moduł został rozszerzony o nowoczesne wektory cech z sieci neuronowych. W głównym repozytorium pozostawiono SIFT, ORB, FAST, GoodFeaturesToTrack i MSER, a przestarzałe detektory i deskryptory przeniesiono do opencv_contrib. Dodano ALIKED, DISK i dopasowacz LightGlue. OpenCV wyraźnie dostosowuje się do nowoczesnych pipeline'ów, w których cechy obrazów coraz częściej są wydobywane nie za pomocą klasycznych algorytmów, ale poprzez sieci neuronowe.

  • Nowe typy danych w Core.
    Dodano CV_16BF / cv::bfloat, CV_32U, CV_64U, CV_64S oraz CV_Bool. Poprawiono również wsparcie dla N-wymiarowych tablic, tablic 1D oraz skalarów 0D. LAPACK jest teraz zawsze dostępny: jeżeli brak zewnętrznej biblioteki, OpenCV kompiluje wbudowany minimalny podzbiór. Zmiany są istotne dla DNN, algorytmów numerycznych oraz kompatybilności z nowoczesnymi formatami danych, w których bfloat16 i rozszerzone typy spotykają się coraz częściej.

  • Przyspieszono przetwarzanie obrazów.
    W imgproc przetworzono warpAffine, warpPerspective i remap. Zgłoszono poprawę wydajności w zakresie od 10% do ponad 300%, w zależności od platformy, rozmiaru obrazu, typu danych i flag operacyjnych.
    To już nie jest tylko o modzie AI — takie optymalizacje są bezpośrednio ważne dla klasycznych zadań: strumieni wideo, stabilizacji, transformacji projekcyjnych oraz przygotowania danych przed inferencją.

  • Poprawiono wyświetlanie tekstu.
    Stary mechanizm renderowania tekstu zastąpiono silnikiem TrueType opartym na STB z wbudowaną wariantową czcionką Rubik. Można dodawać czcionki użytkowników, wprowadzono szeroką obsługę Unicode. Przy tym złożone pisma, takie jak arabski i dewanagari, nadal są wyświetlane niepoprawnie bez Harfbuzz, a kolorowe emoji nie są obsługiwane. OpenCV staje się wygodniejsze do generowania adnotacji, obrazów debugowania i wizualizacji bez bibliotek zewnętrznych.

  • Zaktualizowano kalibrację kamer oraz 3D.
    calib3d został podzielony na geometry, calib, stereo i ptcloud. USAC stał się standardowym backendem do stabilnej oceny homografii, macierzy kluczowej/fundamentalnej, PnP i innych zadań. Dodano pipeline kalibracji wielokamerowej, wstępną obsługę przetwarzania siatek i chmur punktów, w tym TSDF, ICP, import i eksport .ply oraz .obj. To ważny krok dla robotyki, SLAM, AR/VR i systemów wielokamerowych, gdzie samo przetwarzanie 2D jest już niewystarczające.

  • Przykłady i dokumentacja zostały przeprojektowane.
    Przestarzałe przykłady zostały usunięte, a pozostałe zaktualizowane. Dla przykładów DNN używana jest ogólna kolekcja modeli, którą można pobrać skryptem download_models.py. Dodano eksperymentalne przykłady dla VLM i LDM, a dokumentacja zyskała nowy temat, szybką wyszukiwarkę, tryb jasny/ciemny oraz poprawioną nawigację. Dla tak dużej biblioteki to nie kosmetyczna zmiana: normalna dokumentacja i działające przykłady mają bezpośredni wpływ na to, czy programiści naprawdę przejdą na OpenCV 5.x.

W rezultacie OpenCV 5.0 to nie tylko kolejna wersja z optymalizacjami, ale znacząca aktualizacja wszystkiego: mniej dziedzictwa z epoki OpenCV 1.x i więcej orientacji na ONNX, inferencję sieci neuronowych, nowoczesne cechy, przetwarzanie 3D oraz heterogeniczne przyspieszenie. Przy tym migracja dla starych projektów może wymagać poprawek z powodu usunięcia C API i przeniesienia części modułów do opencv_contrib.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster