OpenCV ( Open Source Computer Vision Library ) es una biblioteca de funciones de programación dirigida principalmente a la visión por computadora en tiempo real . [1] Desarrollado originalmente por Intel , más tarde fue apoyado por Willow Garage y luego por Itseez (que luego fue adquirido por Intel [2] ). La biblioteca es multiplataforma y de uso gratuito bajo la licencia Apache 2 de código abierto . A partir de 2011, OpenCV presenta aceleración de GPU para operaciones en tiempo real. [3]
Autor (es) original (es) | Intel Corporation , Willow Garage , Itseez |
---|---|
Versión inicial | Junio de 2000 |
Lanzamiento estable | 4.5.1 / 22 de diciembre de 2020 |
Repositorio | |
Escrito en | C / C ++ |
Sistema operativo | Multiplataforma |
Tamaño | ~ 200 MB |
Tipo | Biblioteca |
Licencia | Licencia de Apache |
Sitio web | opencv |
Historia
Lanzado oficialmente en 1999, el proyecto OpenCV fue inicialmente una iniciativa de investigación de Intel para promover aplicaciones intensivas en CPU , parte de una serie de proyectos que incluyen trazado de rayos en tiempo real y paredes de visualización 3D . [4] Los principales contribuyentes al proyecto incluyeron una serie de expertos en optimización en Intel Rusia, así como el equipo de biblioteca de rendimiento de Intel. En los primeros días de OpenCV, los objetivos del proyecto se describieron [5] como:
- Avanzar en la investigación de la visión al proporcionar no solo código abierto sino también optimizado para la infraestructura básica de la visión. No más reinventar la rueda .
- Difundir el conocimiento de la visión proporcionando una infraestructura común en la que los desarrolladores puedan construir, de modo que el código sea más fácil de leer y transferir.
- Mejore las aplicaciones comerciales basadas en la visión haciendo que el código portátil optimizado para el rendimiento esté disponible de forma gratuita, con una licencia que no requiera que el código sea abierto o gratuito.
La primera versión alfa de OpenCV se lanzó al público en la Conferencia IEEE sobre Visión por Computadora y Reconocimiento de Patrones en 2000, y se lanzaron cinco betas entre 2001 y 2005. La primera versión 1.0 se lanzó en 2006. Una versión 1.1 "pre-lanzamiento "fue lanzado en octubre de 2008.
La segunda versión importante de OpenCV fue en octubre de 2009. OpenCV 2 incluye cambios importantes en la interfaz de C ++ , con el objetivo de patrones más fáciles, más seguros para los tipos, nuevas funciones y mejores implementaciones para las existentes en términos de rendimiento (especialmente en múltiples sistemas centrales). Los lanzamientos oficiales ahora ocurren cada seis meses [6] y el desarrollo ahora lo realiza un equipo ruso independiente respaldado por corporaciones comerciales.
En agosto de 2012, el soporte para OpenCV fue asumido por una fundación sin fines de lucro, OpenCV.org, que mantiene un sitio para desarrolladores [7] y usuarios. [8]
En mayo de 2016, Intel firmó un acuerdo para adquirir Itseez, [9] un desarrollador líder de OpenCV. [10]
En julio de 2020, OpenCV anunció y comenzó una campaña de Kickstarter para el OpenCV AI Kit , una serie de módulos de hardware y adiciones a OpenCV que admiten Spatial AI.
Aplicaciones
Las áreas de aplicación de OpenCV incluyen:
- Conjuntos de herramientas de funciones 2D y 3D
- Estimación de egomoción
- Sistema de reconocimiento facial
- Reconocimiento de gestos
- Interacción humano-computadora (HCI)
- Robótica móvil
- Comprensión del movimiento
- Detección de objetos
- Segmentación y reconocimiento
- Visión estereoscópica de Stereopsis : percepción de profundidad desde 2 cámaras
- Estructura por movimiento (SFM)
- Rastreo de movimiento
- Realidad aumentada
Para admitir algunas de las áreas anteriores, OpenCV incluye una biblioteca de aprendizaje automático estadístico que contiene:
- Impulso
- Aprendizaje del árbol de decisiones
- Árboles de aumento de gradiente
- Algoritmo de maximización de expectativas
- algoritmo de vecino k-más cercano
- Clasificador ingenuo de Bayes
- Redes neuronales artificiales
- Bosque aleatorio
- Máquina de vectores de soporte (SVM)
- Redes neuronales profundas (DNN) [11]
Lenguaje de programación
OpenCV está escrito en C ++ y su interfaz principal está en C ++, pero aún conserva una interfaz C más antigua, menos completa aunque extensa . Todos los nuevos desarrollos y algoritmos aparecen en la interfaz de C ++. Hay enlaces en Python , Java y MATLAB / OCTAVE . La API para estas interfaces se puede encontrar en la documentación en línea. [12] Se han desarrollado envoltorios en varios lenguajes de programación para fomentar la adopción por una audiencia más amplia. En la versión 3.4, los enlaces de JavaScript para un subconjunto seleccionado de funciones de OpenCV se lanzaron como OpenCV.js, para su uso en plataformas web. [13]
Aceleracion de hardware
Si la biblioteca encuentra las primitivas de rendimiento integradas de Intel en el sistema, utilizará estas rutinas optimizadas patentadas para acelerarse.
Una interfaz de GPU basada en CUDA ha estado en progreso desde septiembre de 2010. [14]
Una interfaz GPU basada en OpenCL ha estado en progreso desde octubre de 2012, [15] la documentación para la versión 2.4.13.3 se puede encontrar en docs.opencv.org. [dieciséis]
Soporte del sistema operativo
OpenCV se ejecuta en los siguientes sistemas operativos de escritorio: Windows , Linux , macOS , FreeBSD , NetBSD , OpenBSD . OpenCV se ejecuta en los siguientes sistemas operativos móviles: Android , iOS , Maemo , [17] BlackBerry 10 . [18] El usuario puede obtener lanzamientos oficiales de SourceForge o tomar las últimas fuentes de GitHub . [19] OpenCV usa CMake .
Ver también
- AForge.NET , una biblioteca de visión por computadora para Common Language Runtime ( .NET Framework y Mono ).
- ROS (sistema operativo de robot) . OpenCV se utiliza como paquete de visión principal en ROS.
- VXL , una biblioteca alternativa escrita en C ++.
- CVIPtools , un completo entorno de software de procesamiento de imágenes y visión por computadora basado en GUI, con bibliotecas de funciones C, una DLL basada en COM, junto con dos programas de utilidad para el desarrollo de algoritmos y el procesamiento por lotes.
- OpenNN , una biblioteca de redes neuronales de código abierto escrita en C ++.
- Lista de paquetes de software gratuitos y de código abierto
Referencias
- ^ Pulli, Kari; Baksheev, Anatoly; Kornyakov, Kirill; Eruhimov, Victor (1 de abril de 2012). "Visión por computadora en tiempo real con OpenCV" . Cola . 10 (4): 40: 40–40: 56. doi : 10.1145 / 2181796.2206309 .
- ^ Intel adquiere Itseez: https://opencv.org/intel-acquires-itseez.html
- ^ "CUDA" . opencv.org . Consultado el 15 de octubre de 2020 .
- ^ Adrian Kaehler; Gary Bradski (14 de diciembre de 2016). Aprendiendo OpenCV 3: Computer Vision en C ++ con la biblioteca OpenCV . O'Reilly Media. págs. 26 y siguientes. ISBN 978-1-4919-3800-3.
- ^ Bradski, Gary; Kaehler, Adrian (2008). Aprendiendo OpenCV: Visión por computadora con la biblioteca OpenCV . O'Reilly Media, Inc. pág. 6.
- ^ Registros de cambios de OpenCV: http://code.opencv.org/projects/opencv/wiki/ChangeLog Archivado el 15 de enero de 2013 en Wayback Machine
- ^ Sitio para desarrolladores de OpenCV: http://code.opencv.org Archivado el 13 de enero de 2013 en archive.today
- ^ Sitio de usuario de OpenCV: http://opencv.org/
- ^ "Intel adquiere visión por computadora para IOT, automotriz | Intel Newsroom" . Sala de prensa de Intel . Consultado el 26 de noviembre de 2018 .
- ^ "Intel adquiere la empresa rusa de visión artificial Itseez" . Noticias digitales East-West . 2016-05-31 . Consultado el 26 de noviembre de 2018 .
- ^ OpenCV: http://opencv.org/opencv-3-3.html
- ^ Interfaz OpenCV C: http://docs.opencv.org
- ^ Introducción a OpenCV.js y tutoriales
- ^ Puerto de GPU Cuda: http://opencv.org/platforms/cuda.html Archivado el 21 de mayo de 2016 en Wayback Machine.
- ^ Anuncio de OpenCL: http://opencv.org/opencv-v2-4-3rc-is-under-way.html
- ^ Referencia de API de Computer Vision acelerada por OpenCL: http://docs.opencv.org/modules/ocl/doc/ocl.html
- ^ Puerto de Maemo: https://garage.maemo.org/projects/opencv
- ^ BlackBerry 10 (puerto parcial): https://github.com/blackberry/OpenCV
- ^ "GitHub - opencv / Opencv: Biblioteca de visión por computadora de código abierto" . 21 de mayo de 2020.