OpenCV - Descripción general

OpenCV es una biblioteca multiplataforma con la que podemos desarrollar en tiempo real computer vision applications. Se centra principalmente en el procesamiento de imágenes, la captura y el análisis de vídeo, incluidas funciones como la detección de rostros y la detección de objetos.

Comencemos el capítulo definiendo el término "Visión por computadora".

Visión por computador

La Visión por Computador se puede definir como una disciplina que explica cómo reconstruir, interrumpir y comprender una escena 3D a partir de sus imágenes 2D, en términos de las propiedades de la estructura presente en la escena. Se trata de modelar y replicar la visión humana utilizando software y hardware de computadora.

Computer Vision se superpone significativamente con los siguientes campos:

  • Image Processing - Se centra en la manipulación de imágenes.

  • Pattern Recognition - Explica diversas técnicas para clasificar patrones.

  • Photogrammetry - Se ocupa de obtener medidas precisas a partir de imágenes.

Visión por computadora Vs Procesamiento de imágenes

Image processingse ocupa de la transformación de imagen a imagen. La entrada y la salida del procesamiento de imágenes son imágenes.

Computer visiones la construcción de descripciones explícitas y significativas de objetos físicos a partir de su imagen. El resultado de la visión por computadora es una descripción o interpretación de estructuras en una escena 3D.

Aplicaciones de la visión por computadora

Aquí hemos enumerado algunos de los principales dominios en los que Computer Vision se usa mucho.

Aplicación de robótica

  • Localización: determina la ubicación del robot automáticamente

  • Navigation

  • Evitación de obstáculos

  • Montaje (clavija en agujero, soldadura, pintura)

  • Manipulación (por ejemplo, manipulador de robot PUMA)

  • Interacción de robot humano (HRI): robótica inteligente para interactuar y servir a las personas

Aplicación de medicina

  • Clasificación y detección (por ejemplo, clasificación de lesiones o células y detección de tumores)
  • Segmentación 2D / 3D
  • Reconstrucción de órganos humanos en 3D (resonancia magnética o ultrasonido)
  • Cirugía robótica guiada por visión

Aplicación de automatización industrial

  • Inspección industrial (detección de defectos)
  • Assembly
  • Lectura de códigos de barras y etiquetas de paquetes
  • Clasificación de objetos
  • Comprensión de documentos (por ejemplo, OCR)

Aplicación de seguridad

  • Biometría (iris, huellas dactilares, reconocimiento facial)

  • Vigilancia: detección de determinadas actividades o comportamientos sospechosos

Solicitud de transporte

  • Vehículo autónomo
  • Seguridad, por ejemplo, vigilancia de la vigilancia del conductor

Características de la biblioteca OpenCV

Usando la biblioteca OpenCV, puede:

  • Leer y escribir imágenes

  • Captura y guarda videos

  • Procesar imágenes (filtrar, transformar)

  • Realizar detección de características

  • Detecta objetos específicos como rostros, ojos, autos, en los videos o imágenes.

  • Analizar el video, es decir, estimar el movimiento en él, restar el fondo y rastrear los objetos en él.

OpenCV se desarrolló originalmente en C ++. Además, se proporcionaron enlaces de Python y Java. OpenCV se ejecuta en varios sistemas operativos, como Windows, Linux, OSx, FreeBSD, Net BSD, Open BSD, etc.

Este tutorial explica los conceptos de OpenCV con ejemplos que utilizan enlaces de Java.

Módulos de biblioteca OpenCV

A continuación se muestran los principales módulos de la biblioteca de OpenCV.

Funcionalidad central

Este módulo cubre las estructuras de datos básicas como escalar, punto, rango, etc., que se utilizan para construir aplicaciones OpenCV. Además de estos, también incluye la matriz multidimensionalMat, que se utiliza para almacenar las imágenes. En la biblioteca Java de OpenCV, este módulo se incluye como un paquete con el nombreorg.opencv.core.

Procesamiento de imágenes

Este módulo cubre varias operaciones de procesamiento de imágenes como filtrado de imágenes, transformaciones de imágenes geométricas, conversión de espacio de color, histogramas, etc. En la biblioteca Java de OpenCV, este módulo se incluye como un paquete con el nombre org.opencv.imgproc.

Vídeo

Este módulo cubre los conceptos de análisis de video tales como estimación de movimiento, sustracción de fondo y seguimiento de objetos. En la biblioteca Java de OpenCV, este módulo se incluye como un paquete con el nombreorg.opencv.video.

E / S de video

Este módulo explica la captura de video y los códecs de video usando la biblioteca OpenCV. En la biblioteca Java de OpenCV, este módulo se incluye como un paquete con el nombreorg.opencv.videoio.

calib3d

Este módulo incluye algoritmos relacionados con algoritmos básicos de geometría de múltiples vistas, calibración de cámara única y estéreo, estimación de la pose de objeto, correspondencia estéreo y elementos de reconstrucción 3D. En la biblioteca Java de OpenCV, este módulo se incluye como un paquete con el nombreorg.opencv.calib3d.

características2d

Este módulo incluye los conceptos de detección y descripción de características. En la biblioteca Java de OpenCV, este módulo se incluye como un paquete con el nombreorg.opencv.features2d.

Objdetect

Este módulo incluye la detección de objetos e instancias de las clases predefinidas como caras, ojos, tazas, personas, coches, etc. En la librería Java de OpenCV, este módulo se incluye como un paquete con el nombre org.opencv.objdetect.

Highgui

Esta es una interfaz fácil de usar con capacidades de interfaz de usuario simples. En la biblioteca Java de OpenCV, las características de este módulo se incluyen en dos paquetes diferentes, a saber,org.opencv.imgcodecs y org.opencv.videoio.

Una breve historia de OpenCV

OpenCV fue inicialmente una iniciativa de investigación de Intel para asesorar aplicaciones con uso intensivo de CPU. Fue lanzado oficialmente en 1999.

  • En el año 2006, se lanzó su primera versión principal, OpenCV 1.0.
  • En octubre de 2009, se lanzó la segunda versión principal, OpenCV 2.
  • En agosto de 2012, OpenCV fue adquirida por una organización sin fines de lucro, OpenCV.org.