Glossário

OpenCV

Descobre o poder do OpenCV, a biblioteca de código aberto de referência para visão computacional em tempo real, processamento de imagens e inovações orientadas para a IA.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

OpenCV, abreviatura de Open Source Computer Vision Library, é uma biblioteca de código aberto poderosa e versátil, amplamente utilizada em inteligência artificial (IA) e aprendizagem automática (ML). Fornece um conjunto abrangente de ferramentas e algoritmos especificamente concebidos para tarefas de visão computacional (CV) em tempo real, processamento de imagens e análise de vídeo. Para os profissionais da aprendizagem automática, o OpenCV é um conjunto de ferramentas essencial para o tratamento de dados visuais, permitindo tarefas que vão desde o carregamento e a manipulação básicos de imagens até à compreensão de cenas complexas. A sua natureza de código aberto, mantida pelo OpenCV.org, fomenta uma grande comunidade e um desenvolvimento contínuo, tornando-o uma tecnologia fundamental neste domínio. Está prontamente disponível em várias plataformas, incluindo Windows, Linux, macOS, Android e iOS, e oferece interfaces para linguagens como Python, C++, Java e MATLAB.

Relevância na IA e na aprendizagem automática

O OpenCV desempenha um papel fundamental no pipeline de IA e ML, especialmente quando lida com dados visuais. Fornece ferramentas fundamentais para o pré-processamento de dados, um passo crucial antes de introduzir imagens ou vídeos nos modelos de aprendizagem automática. Os passos comuns de pré-processamento tratados pelo OpenCV incluem o redimensionamento, a conversão do espaço de cor (como BGR para RGB, frequentemente necessária para modelos treinados com ordens de cor específicas), a redução do ruído utilizando filtros como a desfocagem gaussiana e a aplicação de várias transformações para melhorar a qualidade da imagem ou extrair caraterísticas relevantes. Este pré-processamento tem um impacto significativo no desempenho dos modelos de aprendizagem profunda (DL).

O OpenCV é frequentemente utilizado em conjunto com frameworks de ML populares como PyTorch e TensorFlow para construir aplicações CV de ponta a ponta. Enquanto essas estruturas se concentram na construção e no treinamento de redes neurais, o OpenCV lida com a entrada/saída, a manipulação e, muitas vezes, o pós-processamento de dados visuais, como desenhar caixas delimitadoras ou máscaras de segmentação previstas por modelos como Ultralytics YOLO. A sua eficiência no processamento de fluxos de vídeo em tempo real torna-o indispensável para aplicações que requerem uma análise visual imediata, como a inferência em tempo real para deteção de objectos ou estimativa de pose.

Principais caraterísticas e capacidades

O OpenCV oferece uma vasta gama de funções (mais de 2500 algoritmos), abrangendo tanto as técnicas clássicas de visão computacional como o suporte para a integração moderna da aprendizagem profunda. As principais capacidades incluem:

  • E/S de imagem e vídeo: Lê e escreve várias imagens(JPEG, PNG, TIFF) e formatos de vídeo(AVI, MP4).
  • Processamento de imagens: Operações básicas como redimensionamento, corte(ver guia de corte de objectos), rotação, conversões de espaço de cor, filtragem e transformações morfológicas.
  • Deteção e descrição de caraterísticas: Implementa algoritmos como SIFT, SURF (proprietário, frequentemente substituído por ORB em versões recentes), e FAST para identificar pontos-chave em imagens.(Documentação de deteção de caraterísticas do OpenCV).
  • Deteção de objectos: Embora não treine modelos, fornece ferramentas para executar detectores pré-treinados (como cascatas Haar para deteção de rostos) e processar resultados de modelos DL (por exemplo, desenhar caixas de YOLO11 ).
  • Análise de vídeo: Inclui ferramentas para análise de movimento, como fluxo ótico, subtração de fundo e algoritmos de seguimento de objectos(ver modo de seguimento).
  • Calibração de câmaras e reconstrução 3D: Funções para compreender a geometria da câmara e reconstruir cenas 3D(Camera Calibration Guide).
  • Módulo de aprendizado de máquina: Inclui implementações de alguns algoritmos clássicos de ML, como Support Vetor Machines (SVM) e K-Nearest Neighbors (KNN), embora as tarefas de aprendizagem profunda geralmente dependam de estruturas dedicadas. Também oferece funcionalidades para carregar e executar modelos exportados em formatos como ONNX.(Documentação de exportação de modelos).

OpenCV vs. Conceitos relacionados

É útil distinguir o OpenCV de termos relacionados:

  • Visão por computador (CV): A CV é o vasto campo científico que se preocupa em permitir que as máquinas interpretem informações visuais. OpenCV é uma ferramenta ou biblioteca usada para implementar aplicações de CV, não o campo em si.
  • Processamento de imagens: Concentra-se principalmente na manipulação de imagens (por exemplo, melhorando o contraste, removendo o ruído). O OpenCV fornece funções extensivas de processamento de imagem, mas também inclui tarefas de nível superior como reconhecimento de objectos e compreensão de cenas, que se enquadram na visão computacional.
  • Estruturas de ML (PyTorch, TensorFlow): Essas estruturas são projetadas principalmente para construir, treinar e implantar redes neurais e outros modelos de ML. O OpenCV complementa-os fornecendo as ferramentas essenciais para lidar com os dados visuais antes de entrarem no modelo (pré-processamento) e após a inferência (visualização, pós-processamento). Embora o OpenCV tenha algumas capacidades de ML, não é o seu principal objetivo em comparação com estas estruturas dedicadas. OUltralytics HUB, por exemplo, utiliza estruturas como o PyTorch para o treino de modelos e pode utilizar o OpenCV implícita ou explicitamente para o tratamento de dados.

Aplicações no mundo real

A versatilidade do OpenCV torna-o omnipresente em inúmeras aplicações de IA/ML:

  1. Veículos autónomos: Em carros autónomos e Sistemas Avançados de Assistência ao Condutor (ADAS), o OpenCV é frequentemente utilizado para o processamento inicial de dados de câmaras e LiDAR. As tarefas incluem a deteção de faixas, o reconhecimento de obstáculos através da correspondência de caraterísticas ou deteção de contornos, o reconhecimento de sinais de trânsito (muitas vezes alimentando imagens processadas para um classificador) e a costura de imagens para sistemas de visão surround. Por exemplo, os fotogramas brutos da câmara podem ser pré-processados (corrigidos quanto à distorção, brilho ajustado) utilizando o OpenCV antes de serem introduzidos num modelo de aprendizagem profunda como o YOLOv8 para detetar carros e peões.(Explora a tecnologia da Waymo).
  2. Análise de imagens médicas: O OpenCV ajuda a carregar vários formatos de imagens médicas (como o DICOM, muitas vezes com a ajuda de outras bibliotecas), a melhorar o contraste da imagem para uma melhor visibilidade das anomalias, a segmentar regiões de interesse (como tumores ou órgãos) utilizando técnicas como algoritmos de limiarização ou de bacias hidrográficas e a registar imagens tiradas em momentos diferentes ou de modalidades diferentes. Estes dados pré-processados são depois frequentemente analisados por modelos ML especializados para diagnóstico ou planeamento do tratamento.(IA em Radiologia - RSNA).

Outras aplicações incluem a robótica(Integrating Computer Vision in Robotics), a vigilância(Security Alarm Systems), a realidade aumentada, o controlo de qualidade no fabrico e a agricultura (por exemplo, monitorização da saúde das culturas). A documentaçãoUltralytics fornece muitos exemplos em que as funções OpenCV podem ser utilizadas para etapas de pré ou pós-processamento em conjunto com modelos YOLO .

Lê tudo
OSZAR »