A biblioteca OpenCV atinge sua maior atualização em mais de duas décadas com o lançamento da versão 5. Disponível em pip a partir de 8 de junho de 2026, a nova versão traz um motor DNN totalmente reformulado, suporte ONNX ampliado para mais de 80 % dos operadores, aceleração de hardware aprimorada, tipos de dados FP16/BF16 e avanços significativos em visão 3D.
Por que o OpenCV 5 foi necessário?
Desde a versão 4, a visão computacional evoluiu para combinar algoritmos clássicos, deep learning, transformers e modelos de grande porte. Usuários exigem que o mesmo código rode de forma eficiente em laptops, servidores, dispositivos embarcados, chips ARM, Snapdragon e aceleradores especializados. O OpenCV 5 foi desenvolvido para atender a essa realidade, focando em:
- Desempenho: núcleo mais rápido e compacto, com API C legada removida.
- Suporte a linguagens: bindings modernizados para Python, argumentos nomeados e tipagem clara.
- Motor DNN: arquitetura baseada em grafo, fusão de operadores e inferência dinâmica.
- Aceleração: camada de hardware simplificada para que fornecedores integrem kernels otimizados sem #ifdefs excessivos.
- Visão 3D: calibração multi‑câmera, ChArUco e visualização aprimorada.
- Documentação: navegação renovada e exemplos mais claros.
O novo motor DNN: cobertura e velocidade
A mudança mais impactante é a substituição do motor clássico (versão 4.x) por um motor baseado em grafo tipado. Isso permite:
- Cobertura ONNX acima de 80 %, frente a ~22 % na versão anterior.
- Suporte a subgrafos If/Loop, formas simbólicas e dinâmicas, e grafos QDQ (quantização).
- Fusão de atenção e MatMul, usando implementação similar ao FlashAttention, resultando em execução mais rápida.
Comparativo de desempenho (CPU Intel Core i9‑14900KS)
| Modelo | OpenCV 5 (ms) | ONNX Runtime (ms) | Diferença |
|---|---|---|---|
| XFeat | 6.5 | 8.6 | 31 % mais rápido |
| YOLOv8n | 10.9 | 12.1 | 11 % mais rápido |
| YOLOX‑S | 23.4 | 25.1 | 7 % mais rápido |
| DINOv2 small | 23.7 | 29.5 | 24 % mais rápido |
| RF‑DETR | 102.0 | 106.4 | 4 % mais rápido |
| OWLv2 | 1 090 | 1 489 | 36 % mais rápido |
| BiRefNet | 7.1 | 9.5 | 32 % mais rápido |
Os resultados mostram que, mesmo em CPU, o motor nativo do OpenCV 5 supera o ONNX Runtime em diversos cenários, de detectores leves a modelos de visão aberta.
Como escolher o motor DNN
A API cv::dnn::readNet* aceita o parâmetro engine da enumeração cv::dnn::EngineType:
| Valor | Significado |
|---|---|
ENGINE_CLASSIC (1) |
Força o motor clássico (suporta CUDA, OpenVINO, etc.). |
ENGINE_NEW (2) |
Usa o novo motor baseado em grafo (CPU‑only). |
ENGINE_AUTO (3) |
Padrão: tenta o novo motor e recai ao clássico se falhar. |
ENGINE_ORT (4) |
Wrapper ao ONNX Runtime (necessita compilação com WITH_ONNXRUNTIME=ON). |
Com ENGINE_AUTO, a maioria dos projetos não requer alterações de código; a biblioteca decide automaticamente.
Exemplo em Python
import cv2 as cv
# Comportamento padrão (ENGINE_AUTO)
net = cv.dnn.readNetFromONNX("model.onnx")
# Forçar o motor novo
# net = cv.dnn.readNetFromONNX("model.onnx", engine=cv.dnn.ENGINE_NEW)
net.setInput(blob)
out = net.forward()
Exemplo em C++
#include <opencv2/dnn.hpp>
using namespace cv;
// Padrão (ENGINE_AUTO)
dnn::Net net = dnn::readNetFromONNX("model.onnx");
// Forçar o motor clássico, útil para CUDA/OpenVINO
// dnn::Net net = dnn::readNetFromONNX("model.onnx", dnn::ENGINE_CLASSIC);
net.setInput(blob);
Mat out = net.forward();
Modelos que funcionam “out‑of‑the‑box”
A nova cobertura ONNX habilita a execução direta de modelos modernos, como:
- Detectores: YOLOv8, YOLOX, RF‑DETR
- Segmentadores: BiRefNet, DINOv2
- Modelos de linguagem visual (VLM) e grandes modelos de linguagem (LLM): Qwen 2.5, Gemma 3, PaliGemma, GPT‑2/4
Esses modelos podem ser carregados e inferidos sem dependências externas, facilitando pipelines que combinam visão e linguagem.
LLMs e VLMs dentro do OpenCV
O OpenCV 5 incorpora:
- Tokenizer nativo – converte texto em tokens diretamente na biblioteca.
- KV‑cache – mantém estado de decodificação autoregressiva, reduzindo custo computacional em geração sequencial.
Com isso, é possível rodar pequenos LLMs ou VLMs para tarefas como legendagem de imagens, pós‑processamento de OCR ou consultas de visão aberta, tudo usando a mesma API cv::dnn::Net.
Inpainting e difusão com LaMa
Um dos demos mais chamativos é a remoção de objetos usando o modelo LaMa. O fluxo consiste em:
- Carregar a imagem e a máscara.
- Criar um blob com
cv.dnn.blobFromImages. - Executar um único
forward()no motor DNN. - Obter a imagem preenchida.
import cv2 as cv
net = cv.dnn.readNetFromONNX("lama.onnx")
blob = cv.dnn.blobFromImages([img, mask], scalefactor=1/255.)
net.setInput(blob)
out = net.forward() # Imagem inpainted
O exemplo completo está em samples/dnn/inpainting.py no branch 5.x.
Correspondência de recursos moderna (Deep Learning)
A tradicional pilha Features2D ganha concorrentes baseados em aprendizado:
- ALIKED – detector e descritor CNN que substitui SIFT/ORB.
- DISK – recursos aprendidos por reforço, robustos em cenas de amplo baseline e baixa textura.
- LightGlueMatcher – correspondência baseada em atenção, entrega pontuações de confiança.
Os detectores clássicos permanecem disponíveis, mas o novo módulo permite migrar gradualmente para pipelines aprendidos, inclusive no módulo de stitching, que agora usa LightGlueFeaturesMatcher para panoramas mais precisos.
Núcleo mais rápido e tipos de dados avançados
Além das melhorias de DNN, o OpenCV 5 introduz:
- Tipos FP16 (
cv::hfloat,CV_16F) e BF16 (cv::bfloat,CV_16BF) – adequados para workloads de IA. - Suporte a bool, inteiros 64‑bit e outros – ampliando a expressividade das matrizes.
- Gerenciamento de memória unificado – pool de buffers reutilizado agressivamente, reduzindo alocações desnecessárias.
Essas mudanças beneficiam tanto código clássico de processamento de imagens quanto aplicações de aprendizado profundo.
Documentação renovada
A documentação recebeu redesign responsivo, com navegação por tópicos, exemplos práticos e guia de migração da versão 4.x para 5.x. O objetivo é eliminar a sensação de “lutar contra a documentação”, facilitando a adoção das novas APIs.
O que vem a seguir?
A equipe já indica duas grandes linhas de desenvolvimento:
- Suporte nativo a GPU no novo motor DNN, permitindo aceleração completa em CUDA, Vulkan e outros.
- HAL não‑CPU para pré‑ e pós‑processamento acelerado, reduzindo a dependência de código CPU‑only.
Contribuições da comunidade são bem‑vindas; o repositório no GitHub contém instruções para compilar, testar e submeter pull requests.
Conclusão
OpenCV 5 representa um salto significativo em desempenho, cobertura de modelos e modernização da API. Ao unificar visão clássica e deep learning sob um mesmo framework, a biblioteca consolida sua posição como padrão de fato para visão computacional em projetos de pesquisa, indústria e dispositivos embarcados. A atualização está disponível em pip (pip install opencv-python==5.*) e nos repositórios oficiais para compilação personalizada.