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.