
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
