Descripción
La visión artificial es una disciplina científica formada por un conjunto de técnicas que permiten la captura, el procesamiento y el análisis de imágenes, con el fin de extraer información de utilidad. Su objetivo es automatizar tareas reservadas hasta hace poco tiempo al ámbito humano en áreas como la seguridad, la industria, el comercio, la medicina, etc.
Muchas de las técnicas empleadas en visión artificial proceden de otras disciplinas como la inteligencia artificial o el deep learning, que exigen amplios conocimientos matemáticos. Por ese motivo, su expansión no se ha producido hasta la llegada de librerías como OpenCV, que ocultan esta complejidad y las ponen al alcance de cualquiera que disponga de unos conocimientos básicos de programación, en este caso, de Python.
En este libro aprenderá a usar la librería OpenCV de Python, con la que podrá desarrollar aplicaciones de visión artificial, tanto para imágenes estáticas como para vídeo. Todas las técnicas empleadas se exponen de forma clara y sencilla, sin entrar en conceptos matemáticos complejos. Además, se trata de un libro práctico, por lo que está repleto de ejercicios, cuyo código se explica línea a línea.
OpenCV es software libre, lo que significa que podrá usarlo sin restricciones. También es multiplataforma, así que es posible ejecutarlo tanto en Windows como en MacOS o Linux. Pero lo que realmente ha dado lugar a su enorme popularidad es la gran cantidad de algoritmos que implementa, con los que podrá:
· Poner en práctica técnicas de reconocimiento facial, identificación de objetos o personas, seguimiento de sus movimientos, etc.
· Crear aplicaciones de realidad aumentada, de inspección y vigilancia, orientadas a la robótica o juegos.
En cuanto a Python, este es uno de los lenguajes de programación más extendidos debido a que su código es abierto y multiplataforma, pero, sobre todo, por su sencillez y facilidad de uso. Eso ha hecho que se utilice en infinidad de ámbitos, entre los que destaca el de la visión artificial. Si no conoce este lenguaje, se proporciona un amplio anexo en el que se enseñan sus principios básicos de funcionamiento y con el que podrá seguir las prácticas propuestas de un modo fácil.
Sin lugar a dudas, este es el libro indicado para aprender a desarrollar con agilidad sus propias aplicaciones de visión artificial. No espere más, hágase con su ejemplar y exprima todo su potencial.
Tomás Domínguez es ingeniero de telecomunicación y doctorado en inteligencia artificial. Su labor profesional se ha desarrollado en una multinacional de telecomunicaciones, donde ha ocupado diversos cargos relacionados con la tecnología. Asimismo, ha ejercido como profesor universitario de ingeniería informática en la Universidad Alfonso X el Sabio de Madrid.
Índice
1. INTRODUCCIÓN .....................1
1.1 Visión artificial.......................1
1.2 OpenCV ...............4
1.3 Python.................................. 5
2. INSTALACIÓN DE OPENCV ...................7
3. PRIMEROS PASOS............................... 11
3.1 Carga y visualización de la imagen almacenada en un archivo ..........13
3.2 Obtención de las características de una imagen .................19
3.3 Creación de una imagen a partir de una matriz de píxeles ..........20
3.4 Modificación del valor de los píxeles de una imagen ................ 25
3.5 Almacenamiento de una imagen en un archivo ...............29
4. FUNCIONES DE INTERFAZ GRÁFICA DE USUARIO.......... 33
4.1 Ventanas .............................33
4.2 Líneas ................................. 35 4.3 Rectángulos..........................38
4.4 Círculos y elipses....................40
4.5 Textos.....................42
4.6 Barras de desplazamiento.........................46
5. INTERACCIÓN CON EL RATÓN Y EL TECLADO ..............51
5.1 Gestión de eventos del ratón....................51
5.2 Gestión de eventos del teclado....................57
6. OPERACIONES BÁSICAS DE MANEJO DE IMÁGENES 61
6.1 Obtención del color de un píxel.....................62
6.2 Recorte de regiones.........................66
6.3 Escalado........................... 70
6.4 Adición.......................................72
6.5 Sustracción............................. 75
6.6 Operaciones bit a bit............................76
6.7 Cambio del espacio de color................82
7. HISTOGRAMAS ..................91
8. FILTROS DE PROCESAMIENTO DE IMÁGENES ..................95
8.1 Filtros basados en umbral................95
8.1.1 Filtro de umbral simple....................96
8.1.2 Filtro de umbral Otsu................... 100
8.1.3 Filtro de umbral adaptativo................ 102
8.1.4 Comparación entre filtros.......................108
8.2 Filtros lineales....................110
8.2.1 Filtro paso bajo (suavizado)................. 110
8.2.2 Filtro paso alto (de gradiente)....................... 113 8.3 Filtros morfológicos................. 115
8.3.1 Filtro de dilatación........... 115
8.3.2 Filtro de erosión...................... 120
8.3.3 Otros filtros morfológicos.................. 122
8.4 Filtro Canny..................... 123
9. CONTORNOS...................127
9.1 Identificación.................. 127
9.2 Dibujo.................................. 129
9.3 Cálculo del perímetro y el área......................137
9.4 Bounding box..................... 145
9.4.1 Pasatiempos. Las siete diferencias.................. 151
9.5 Contornos de aproximación................ 157
9.6 Otras funciones.......................... 164
10. BÚSQUEDA DE IMÁGENES............. 171
11. RECONOCIMIENTO DE OBJETOS .............177
11.1 Reconocimiento facial.................. 179
11.2 Reconocimiento de ojos.......................... 184
11.3 Identificación de personas...................... 187
12. OPERACIONES BÁSICAS DE MANEJO DE VÍDEO ................197
12.1 Visualización de las imágenes capturadas por una cámara.......... 197
12.2 Almacenamiento de vídeos............................. 203
12.3 Reproducción de vídeos................................. 207
13. PROCESAMIENTO Y ANÁLISIS DE VÍDEO.................. 209
13.1 Contador de monedas.......................... 209 13.2 Clasificación de objetos por tamaño.............220
13.3 Identificación de figuras geométricas............... 226
13.4 Reconocimiento facial...................231
14. REALIDAD AUMENTADA .................235
15. SEGUIMIENTO DE OBJETOS EN PANTALLA ...............251
15.1 Color tracking............................. 251
15.1.1 Rastreo de objetos.................... 252
15.1.2 Control gestual.....................266 15.2 Meanshift..................................... 276
16. SUSTRACCIÓN DE UNA IMAGEN DE FONDO........... 287
17. ANEXO. FUNDAMENTOS DE PYTHON......... 297
17.1 Entorno de desarrollo....................299
17.1.1 Instalación...................... 299
17.1.2 Descripción general...................306
17.2 Sintaxis básica de Python............... 308
17.3 Variables...................... 309
17.4 Tipos de datos básicos.................. 310
17.4.1 Números. 311
17.4.2 Cadenas de caracteres.................. 312
17.4.3 Booleanos................... 319
17.4.4 Conversión de tipos............... 319
17.5 Operadores. 320
17.6 Estructuras de control.................... 323
17.6.1 if…else.........................323
17.6.2 while........................... 327
17.6.3 for..................................... 328 17.7 Estructuras de datos.................... 331
17.7.1 Listas................... 332
17.7.2 Tuplas..................339
17.7.3 Conjuntos.................. 340
17.7.4 Diccionarios.................343
17.8 Entrada de datos de usuario................ 349
17.9 Depurador de código de Python..................349
17.10 Funciones...................355
17.11 Alcance de las variables....... 358
17.12 Clases y objetos.................... 361
17.12.1 Herencia................... 364
17.13 Módulos..................... 369