OpenCV

OpenCV
AutoresIntel Corporation, Willow Garage, Itseez
DesenvolvedorOpen Source Vision Fundation
Lançamento estável
4.9.0 / 28 de dezembro de 2023; há 2 anos (2023-12-28)
Repositório
Escrito emC/C++/Python
Sistema
operacional
Multiplataforma
PlataformaMultiplataforma
Tipobiblioteca
LicençaBSD
Websiteopencv.org

O OpenCV (abreviação de Open Source Computer Vision Library) é uma biblioteca livre e multi-plataforma (uso acadêmico e comercial), criada pela pela empresa Intel em 2000, para o desenvolvimento de aplicativos na área de visão computacional (sistema que interpreta informação visual) e também usada nas áreas de inteligência artificial (IA) e aprendizagem de máquina.

O OpenCV possui módulos de processamento de imagens e video, Estrutura de dados, Álgebra Linear, GUI (Interface Gráfica do Usuário) básica com sistema de janelas independentes, controle de mouse e teclado, e mais de 350 ferramentas e algoritmos de visão computacional como: filtros de imagem, calibração de câmera, reconhecimento de objetos, análise estrutural. O seu processamento das imagens ocorre em tempo real.

Esta biblioteca foi desenvolvida nas linguagens de programação C/C++. Também, dá suporte a programadores que utilizem Java, Python e Visual Basic e desejam incorporar a biblioteca a seus aplicativos. A versão 1.0 foi lançada no final de 2006 e a 2.0 foi lançada em setembro de 2009.

História

Oficialmente lançado em 1999, o projeto OpenCV foi uma proposta da Intel Research de melhorar aplicações de uso intensivo de processamento, sendo parte de uma série de projetos que incluíam Ray tracing e monitores 3D. Os principais contribuidores do projeto eram da Intel Russia, assim como o time de desempenho de bibliotecas da Intel. No início do projeto, os objetivos foram definidos como:

Características

O OpenCV trabalha com análise visual em tempo real na inteligência artificial (IA) e no aprendizado de máquina (ou aprendizagem automática ML), fazendo o pré-processamento de imagens ou vídeos antes de introduzir nos modelos de aprendizagem de máquina e nos modelos de aprendizagem profunda (DL). O pré-processamento do OpenCV inclui: o redimensionamento, a conversão do espaço de cores (como BGR para RGB), a redução de ruído da imagem, melhoria da qualidade da imagem para extrair caraterísticas relevantes (algoritmos SIFT, SURF, FAST que identificam pontos-chave na imagem), processamento em tempo real de fluxos de vídeo (fluxo ótico), subtração de fundo, inferência para detecção de objetos (como ferramenta cascatas Haar para deteção de rosto), entender a geometria da câmara, calibrar a câmera, compreender cenas, reconstruir cenas 3D, algoritmos clássicos de aprendizagem profunda como Support Vetor Machines (SVM) e K-Nearest Neighbors (KNN).

O OpenCV cria aplicações de visão computacional usando as bibliotecas de aprendizagem de máquina PyTorch e TensorFlow; enquanto essas bibliotecas fazem a construção e o treinamento de redes neurais, o OpenCV trabalha com a entrada/saída, a manipulação e, o pós-processamento de dados visuais (como o desenho de caixas delimitadoras ou máscaras de segmentação previstas por modelos).

Uso real

o OpenCV é versátil em inúmeras aplicações de inteligência artificial e aprendizado de máquina:

Veículos autónomos: nos carros autónomos e nos assistentes de condução (ADAS) o OpenCV é usado para o processamento inicial de dados da câmera e do LiDAR: deteção de faixas, o reconhecimento de obstáculos (correspondência de caraterísticas), deteção de contornos, o reconhecimento de sinais de trânsito (alimentando um classificador com imagens processadas), a costura de imagens para sistemas de visão surround. Os fotogramas brutos da câmera são processados no OpenCV (correção de distorção e ajuste de brilho) para serem usados no YOLOv8 (modelo de aprendizagem profunda que detecta carros e peões).

Análise de imagens médicas: o OpenCV faz tratamento de vários formatos de imagens de exames médicos (como o DICOM): melhora o contraste da imagem para melhor visibilidade das anomalias, segmenta regiões de interesse (tumores ou órgãos) usando algoritmo de limiarização ou de bacias hidrográficas, regista imagens tiradas em momentos diferentes. Os dados visuais pré-processados são analisados por modelos de aprendizado de máquina especializados para diagnóstico (IA em Radiologia - RSNA).

Outras áreas: Robótica com a Integrating Computer Vision in Robotics, Vigilância com a Security Alarm Systems, Realidade aumentada: no controle da saúde de lantas na agricultura, Realidade virtual, Humano-Computador Interface (HCI), Sistema de reconhecimento facial, Reconhecimento de movimentos, Robôs móveis, Reconstrução 3D, Opentoonz usa o OpenCV para determinadas funcionalidades de visão computacional.

Plataformas compatíveis

Esta biblioteca multi-plataforma funciona com: Android, BlackBerry 10, FreeBSD, iOS, Linux, Maemo, OpenBSD, OS X e, Windows.

Estrutura

Linguagem de programação

O OpenCV é escrito em C++ e sua interface principal é em C++, mas ainda mantém uma interface C mais antiga, menos abrangente, embora extensa. Todos os novos desenvolvimentos e algoritmos aparecem na interface C++. Existem ligações em Python (por exemplo, métodos OpenCV cv.line, OpenCV cv2.cvtcolor, OpenCV cv2.circle), Java e, MATLAB/OCTAVE. A API para essas interfaces pode ser encontrada na documentação online.

Wrappers em várias linguagens de programação foram desenvolvidos para incentivar a adoção por um público mais amplo. Na versão 3.4, as ligações JavaScript para um subconjunto selecionado de funções OpenCV foram lançadas como OpenCV.js, para serem usadas em plataformas da web.

Limitações

A complexidade de alguns algoritmos que a biblioteca usa, pode exigir um conhecimento avançado em matemática e programação. E a performance pode variar dependendo do hardware usado, e da complexidade da análise realizada.

Ligações externas

Referências

  1. 1 2 3 4 «O que é OpenCV: Entenda a Biblioteca de Visão Computacional». Chapeco. 6 de agosto de 2024. Consultado em 2 de julho de 2025
  2. 1 2 3 4 5 6 7 8 9 10 11 12 «OpenCV: Biblioteca de visão computacional de código aberto». Ultralytics. Consultado em 2 de julho de 2025
  3. ↑ Android port: http://opencv.willowgarage.com/wiki/AndroidExperimental Arquivado em 26 de novembro de 2012, no Wayback Machine.
  4. ↑ BlackBerry 10 (partial port): https://github.com/blackberry/OpenCV
  5. ↑ iPhone port: http://www.eosgarden.com/en/opensource/opencv-ios/overview/
  6. ↑ Maemo port: https://garage.maemo.org/projects/opencv
  7. ↑ «OpenCV cv.line». 11 de outubro de 2021
  8. ↑ «OpenCV cv2.cvtcolor». 11 de outubro de 2021
  9. ↑ «OpenCV cv2.circle». 11 de outubro de 2021
  10. ↑ OpenCV C interface: http://docs.opencv.org
  11. ↑ Introduction to OpenCV.js and Tutorials