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.