OpenCV 5.0 è una versione chiave nella lunga storia della Open Source Computer Vision Library. La release introduce una nuova engine per machine learning, una modernizzazione del motore sottostante e nuove funzioni avanzate. La DNN (Deep Neural Network) Engine, cuore del nuovo OpenCV, offre ormai supporto a un gran numero di modelli ONNX moderni e introduce funzionalità che favoriscono l'uso diretto in OpenCV di LLM e VLM.
Una Engine DNN più potente e flessibile
La principale novità di OpenCV 5.0 è la riimplementazione completa della engine DNN. Il supporto ai modelli in formato ONNX ha registrato un balzo, passando da circa il 22% a oltre il 80%, una crescita significativa che tocca modelli moderni con strumenti di elaborazione come Transformer o Attention-based architectures.
La DNN Engine supporta ora nuove caratteristiche, tra cui la gestione di forme di input dinamiche, l'uso di blocchi di controllo If e Loop, e la capacità di esprimere il fusione di Attention, un aspetto fondamentale per i modelli Transformer. Questa funzione permette di raggruppare operazioni tipiche Transformer in singoli passi di calcolo ottimizzati, riducendo i tempi di esecuzione e gli usi di memoria.
Supporto ai modelli linguistici e visione multimodale
La versione 5 introduce per la prima volta il supporto diretto ai modelli linguistici (Large Language Models, LLM) e Vision-Language Models (VLM) all'interno di OpenCV. Ora OpenCV integra un Tokenizer e un KV-Cache per la generazione autoregressiva del testo. Tra i modelli supportati figurano Qwen 2.5, Gemma 3 e PaliGemma.
La nuova implementazione consente a OpenCV di processare sia modelli per visione artificiale che linguistici in contesti come l’analisi di un’immagine seguita da una descrizione testuale, offrendo un supporto completo a scenari multimodali.
Gestione flessibile delle engine
Per facilitare la transizione verso la nuova engine, OpenCV 5.0 mantiene la vecchia engine DNN, così come supporta l'uso opzionale di ONNX Runtime. Le applicazioni possono quindi scegliere tra tre varianti d'esecuzione: la nuova engine, la vecchia e ONNX Runtime, selezionando quella ottimale in base alle proprie esigenze.
La selezione può essere fatta semplicemente al momento del caricamento del modello, grazie a un parametro nel Enum cv::dnn::EngineType. L’opzione ENGINE_AUTO consente di far scegliere automaticamente la migliore implementazione possibile.
Deep Learning nei feature matching
OpenCV rafforza l'uso di Deep Learning anche nel modulo di feature matching. Il modulo Features sostituisce il precedente Features2D, introducendo metodi neurali come ALIKED, DISK e LightGlueMatcher, integrandosi con tecnologie classiche come SIFT o ORB.
Il modulo LightGlue utilizza meccanismi Attention-based per migliorare la robustezza nell’abbinate delle feature rispetto ai metodi tradizionali. Il supporto alle tecnologie vecchie rimane invariato, lasciando spazio a una scelta modulare in base alle esigenze applicative.
Modernizzazione del core della libreria
Il core di OpenCV 5.0 è stato modernizzato con nuovi tipi di dati (FP16, BF16), il supporto a Bool, e a diversi tipi interi. La classe cv::Mat ha acquisito la capacità di rappresentare strutture 0D e 1D, e supporta le operazioni broadcasting e N-dimensionali.
Poiché Python è sempre un linguaggio di riferimento, OpenCV 5.0 introduce un supporto a Python 3, con l'integrazione di NumPy 2.x e la possibilità di usare nomi espliciti nei parametri durante le chiamate di funzioni, rendendo il codice più leggibile.
Aggiornamenti per la C-API
La C-API di OpenCV si trova ormai in fase di deprecazione: è considerata obsoleta, e il team di OpenCV si sta muovendo verso nuove API più moderne e pulite. La scelta di allontanarsi da vecchi paradigmi ha permesso di migliorare l'interfaccia e il funzionamento all’interno dell'ecosistema Python.
Hardware e accelerazione
L'accelerazione hardware è uno dei temi centrali di OpenCV 5.0. La libreria ha rinnovato completamente la sua abstrazione hardware (HAL) per poter supportare più facilmente librerie ottimizzate, come Intel IPP, Arm KleidiCV, Qualcomm FastCV e implementazioni basate su RISC-V.
Il nuovo modello di HAL garantisce un supporto a una vasta gamma di estensioni ISA come SSE, AVX, NEON, SVE e RVV, unificandole attraverso un'interfaccia comune. Questo permette alle applicazioni di beneficiare dell'accelerazione in diversi processori senza modificare il codice.
Potenziale 3D in espansione
Il modulo calib3d è stato suddiviso nei tre moduli: 3d, calib e stereo, dando vita a nuove funzioni per la calibrazione multi-camera, l'import/export di point clouds e mesh e la ricostruzione 3D basata su volumi di TSDF.
Vengono inoltre introdotti algoritmi avanzati come MAGSAC, utili per stimare relazioni geometriche robuste in ambienti 3D. Queste innovazioni sono pensate principalmente per i settori robotica, automazione e misurazione industriale.
Altro per applicazioni e sviluppo
OpenCV si aggiorna anche in termini di gestione del codice sorgente e strumenti per lo sviluppo. Le nuove istruzioni tecniche (documentation) sono state implementate usando Sphinx e Doxygen insieme. Il codice sorgente della libreria è ospitato su GitHub e OpenCV 5 può essere installato tramite pip, rendendone facile la gestione da parte degli sviluppatori.
Con OpenCV 5.0 è chiaro che la libreria intende rimanere al passo con le esigenze dell'AI moderna, integrando modelli linguistici, multimodali e strumenti di visione artificiale con una forte attenzione all’ottimizzazione, alla scalabilità e all’efficienza.