OpenCV - Visão geral

OpenCV é uma biblioteca multiplataforma com a qual podemos desenvolver em tempo real computer vision applications. Ele se concentra principalmente no processamento de imagem, captura e análise de vídeo, incluindo recursos como detecção de rosto e detecção de objeto.

Vamos começar o capítulo definindo o termo "Visão Computacional".

Visão Computacional

Visão computacional pode ser definida como uma disciplina que explica como reconstruir, interromper e compreender uma cena 3D a partir de suas imagens 2D, em termos das propriedades da estrutura presente na cena. Trata-se de modelar e replicar a visão humana usando software e hardware de computador.

A visão computacional se sobrepõe significativamente aos seguintes campos -

  • Image Processing - Concentra-se na manipulação de imagens.

  • Pattern Recognition - Explica várias técnicas para classificar padrões.

  • Photogrammetry - Preocupa-se em obter medidas precisas de imagens.

Visão Computacional Vs Processamento de Imagens

Image processinglida com a transformação de imagem em imagem. A entrada e a saída do processamento de imagem são imagens.

Computer visioné a construção de descrições explícitas e significativas de objetos físicos a partir de sua imagem. A saída da visão computacional é uma descrição ou interpretação de estruturas em cena 3D.

Aplicações da Visão Computacional

Listamos aqui alguns dos principais domínios em que a visão computacional é amplamente utilizada.

Aplicação de Robótica

  • Localização - determine a localização do robô automaticamente

  • Navigation

  • Evitar obstáculos

  • Montagem (peg-in-hole, soldagem, pintura)

  • Manipulação (por exemplo, robô manipulador PUMA)

  • Human Robot Interaction (HRI) - Robótica inteligente para interagir e servir as pessoas

Aplicação de medicamento

  • Classificação e detecção (por exemplo, lesão ou classificação de células e detecção de tumor)
  • Segmentação 2D / 3D
  • Reconstrução 3D de órgãos humanos (ressonância magnética ou ultrassom)
  • Cirurgia robótica guiada pela visão

Aplicação de automação industrial

  • Inspeção industrial (detecção de defeito)
  • Assembly
  • Leitura do código de barras e etiqueta da embalagem
  • Classificação de objetos
  • Compreensão de documentos (por exemplo, OCR)

Aplicativo de Segurança

  • Biometria (íris, impressão digital, reconhecimento facial)

  • Vigilância - Detecção de certas atividades ou comportamentos suspeitos

Aplicação de transporte

  • Veículo autônomo
  • Segurança, por exemplo, monitoramento de vigilância do motorista

Recursos da Biblioteca OpenCV

Usando a biblioteca OpenCV, você pode -

  • Ler e escrever imagens

  • Capture e salve vídeos

  • Processar imagens (filtrar, transformar)

  • Executar detecção de recursos

  • Detecte objetos específicos, como rostos, olhos, carros, nos vídeos ou imagens.

  • Analise o vídeo, ou seja, estime o movimento nele, subtraia o fundo e rastreie os objetos nele.

OpenCV foi originalmente desenvolvido em C ++. Além disso, foram fornecidos vínculos Python e Java. OpenCV é executado em vários sistemas operacionais, como windows, Linux, OSx, FreeBSD, Net BSD, Open BSD, etc.

Este tutorial explica os conceitos de OpenCV com exemplos usando ligações Java.

Módulos da biblioteca OpenCV

A seguir estão os principais módulos da biblioteca OpenCV.

Funcionalidade central

Este módulo cobre as estruturas de dados básicas, como escalar, ponto, intervalo, etc., que são usadas para construir aplicativos OpenCV. Além desses, também inclui a matriz multidimensionalMat, que é usado para armazenar as imagens. Na biblioteca Java do OpenCV, este módulo está incluído como um pacote com o nomeorg.opencv.core.

Processamento de imagem

Este módulo cobre várias operações de processamento de imagem, como filtragem de imagem, transformações geométricas de imagem, conversão de espaço de cores, histogramas, etc. Na biblioteca Java do OpenCV, este módulo está incluído como um pacote com o nome org.opencv.imgproc.

Vídeo

Este módulo cobre os conceitos de análise de vídeo, como estimativa de movimento, subtração de fundo e rastreamento de objetos. Na biblioteca Java do OpenCV, este módulo está incluído como um pacote com o nomeorg.opencv.video.

I / O de vídeo

Este módulo explica a captura de vídeo e codecs de vídeo usando a biblioteca OpenCV. Na biblioteca Java do OpenCV, este módulo está incluído como um pacote com o nomeorg.opencv.videoio.

calib3d

Este módulo inclui algoritmos relativos a algoritmos básicos de geometria de múltiplas visualizações, calibração de câmera única e estéreo, estimativa de pose de objeto, correspondência estéreo e elementos de reconstrução 3D. Na biblioteca Java do OpenCV, este módulo está incluído como um pacote com o nomeorg.opencv.calib3d.

features2d

Este módulo inclui os conceitos de detecção e descrição de recursos. Na biblioteca Java do OpenCV, este módulo está incluído como um pacote com o nomeorg.opencv.features2d.

Objdetect

Este módulo inclui a detecção de objetos e instâncias das classes predefinidas, como rostos, olhos, canecas, pessoas, carros, etc. Na biblioteca Java do OpenCV, este módulo está incluído como um pacote com o nome org.opencv.objdetect.

Highgui

Esta é uma interface fácil de usar com recursos de IU simples. Na biblioteca Java do OpenCV, os recursos deste módulo estão incluídos em dois pacotes diferentes, a saber,org.opencv.imgcodecs e org.opencv.videoio.

Uma breve história do OpenCV

OpenCV foi inicialmente uma iniciativa de pesquisa da Intel para aconselhar aplicativos com uso intenso de CPU. Foi lançado oficialmente em 1999.

  • No ano de 2006, sua primeira versão principal, OpenCV 1.0, foi lançada.
  • Em outubro de 2009, a segunda versão principal, OpenCV 2, foi lançada.
  • Em agosto de 2012, o OpenCV foi adquirido por uma organização sem fins lucrativos OpenCV.org.