OpenCV ( Open Source Computer Vision Library ) es una biblioteca de funciones de programación principalmente para visión artificial en tiempo real . [2] Originalmente desarrollada por Intel , luego fue apoyada por Willow Garage y luego por Itseez (que luego fue adquirida por Intel [3] ). La biblioteca es multiplataforma y tiene licencia de software libre y de código abierto bajo la Licencia Apache 2. A partir de 2011, OpenCV cuenta con aceleración de GPU para operaciones en tiempo real. [4]
El proyecto OpenCV, lanzado oficialmente en 1999, fue inicialmente una iniciativa de Intel Research para impulsar aplicaciones que hacen un uso intensivo de la CPU , parte de una serie de proyectos que incluyen el trazado de rayos en tiempo real y las pantallas 3D . [5] Entre los principales contribuyentes al proyecto se encontraban varios expertos en optimización de Intel Rusia, así como el equipo de la biblioteca de rendimiento de Intel. En los primeros días de OpenCV, los objetivos del proyecto se describían [6] como:
- Fomente la investigación sobre visión proporcionando no solo código abierto sino también optimizado para la infraestructura básica de visión. No es necesario reinventar la rueda .
- Difundir el conocimiento sobre la visión proporcionando una infraestructura común sobre la cual los desarrolladores puedan construir, de modo que el código sea más fácilmente legible y transferible.
- Desarrollar aplicaciones comerciales basadas en visión avanzada al poner a disposición de los usuarios de forma gratuita código portable y optimizado en rendimiento, con una licencia que no requiere que el código en sí sea abierto o gratuito.
La primera versión alfa de OpenCV se lanzó al público en la Conferencia IEEE sobre Visión por Computador y Reconocimiento de Patrones en 2000, y se lanzaron cinco versiones beta entre 2001 y 2005. La primera versión 1.0 se lanzó en 2006. Una versión 1.1 "pre-lanzada" se lanzó en octubre de 2008.
El segundo lanzamiento importante de OpenCV se realizó en octubre de 2009. OpenCV 2 incluye cambios importantes en la interfaz de C++ , con el objetivo de crear patrones más sencillos y con mayor seguridad de tipos, nuevas funciones y mejores implementaciones de las existentes en términos de rendimiento (especialmente en sistemas multinúcleo). Los lanzamientos oficiales ahora se realizan cada seis meses [7] 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 [8] y usuarios. [9]
En mayo de 2016, Intel firmó un acuerdo para adquirir Itseez, [10] un desarrollador líder de OpenCV. [11]
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 IA espacial.
En agosto de 2020, OpenCV lanzó OpenCV.ai, la división de consultoría profesional. El equipo de desarrolladores brinda servicios de consultoría y ofrece soluciones de visión artificial , aprendizaje automático e inteligencia artificial . [12]
Las áreas de aplicación de OpenCV incluyen:
Para respaldar algunas de las áreas mencionadas anteriormente, OpenCV incluye una biblioteca de aprendizaje automático estadístico que contiene:
OpenCV está escrito en el lenguaje de programación C++ , al igual que su interfaz principal, pero aún conserva una interfaz C más antigua, menos completa aunque extensa . Todos los desarrollos y algoritmos más nuevos aparecen en la interfaz C++. Hay enlaces de lenguaje en Python , Java y MATLAB / Octave . La interfaz de programación de aplicaciones ( API ) para estas interfaces se puede encontrar en la documentación en línea. [14] Se han desarrollado bibliotecas de envoltura en varios lenguajes para fomentar la adopción por parte de un público más amplio. En la versión 3.4, los enlaces de JavaScript para un subconjunto seleccionado de funciones de OpenCV se lanzaron como OpenCV.js, para ser utilizados en plataformas web. [15]
Si la biblioteca encuentra las primitivas de rendimiento integradas de Intel en el sistema, utilizará estas rutinas optimizadas propietarias para acelerarse.
Desde septiembre de 2010 se está desarrollando una interfaz de unidad de procesamiento gráfico (GPU) basada en la Arquitectura de Dispositivo Unificado de Computación ( CUDA ). [16]
Desde octubre de 2012 se está desarrollando una interfaz GPU basada en OpenCL , [17] la documentación para la versión 2.4.13.3 se puede encontrar en docs.opencv.org. [18]
OpenCV se ejecuta en los sistemas operativos de escritorio : Windows , Linux , macOS , FreeBSD , NetBSD y OpenBSD, así como en los sistemas operativos móviles: Android , iOS , Maemo , [19] BlackBerry 10 y QNX . [20] El usuario puede obtener versiones oficiales de SourceForge o tomar las últimas fuentes de GitHub . [21] OpenCV usa CMake .