Introducción
En este artículo proporcionaré una revisión del curso de Udemy Manos a la obra con visión artificial con OpenCV y Python de Shrobon Bis apareció en el Udemy sitio de aprendizaje en línea. En el momento de escribir este artículo, diría que el curso tiene un éxito moderado con un total de 146 calificaciones con un promedio de 4.1 / 5 estrellas junto con una matrícula total de 851 estudiantes.
Según la descripción, este curso es de naturaleza introductoria y está dirigido a programadores principiantes e intermedios con un conocimiento básico del lenguaje de programación Python. En el momento en que comencé este curso, tenía muy pocos conocimientos básicos sobre procesamiento de imágenes o visión por computadora y ninguna experiencia con OpenCV, lo que me convierte en el público objetivo ideal para este curso.
En las siguientes secciones, revisaré y discutiré las diversas áreas de contenido, proporcionando mi opinión sobre el material.
Revisión de la sección del curso
Introducción e instalación
Esta sección tiene el contenido introductorio típico que cubre la mayoría de los cursos de esta naturaleza, como una explicación básica del curso y se cubrió un esquema. La instalación se presentó en forma de una descripción simple de cómo instalar el entorno Anaconda junto con OpenCV. En mi opinión, hubiera sido bueno dar una demostración en video de la instalación del software requerido en lugar de las instrucciones proporcionadas.
Conceptos básicos de la imagen
En esta sección, el autor del curso describe los conceptos básicos de lectura y escritura de imágenes hacia y desde el disco junto con cómo tomar una imagen de un recurso web a través de HTTP.
Te puede interesar:Listas enlazadas en detalle con ejemplos de Python: Listas enlazadas simplesAdemás del IO de archivos básico, explica muy bien el concepto de canales de imagen para imágenes en color rojo, verde y azul. Además de su explicación de los canales de imagen, hay algunos buenos ejemplos del uso del lenguaje de programación Python y la biblioteca OpenCV para seleccionar y manipular canales individualmente, así como convertir de un lado a otro entre imágenes en color y escala de grises. Por último, se explica cómo mostrar imágenes utilizando tanto la biblioteca OpenCV como la biblioteca de visualización matplotlib.
En general, mi opinión de esta sección es bastante positiva. Creo que hubo un equilibrio adecuado entre la explicación y los ejemplos de codificación para describir suficientemente cómo leer y conservar los datos de la imagen usando el disco.
Además, creo que la inclusión de cómo leer en una imagen a través de HTTP fue una gran decisión práctica, pero el autor no dejó en claro aquí que la biblioteca que se estaba utilizando no era OpenCV, sino un submódulo de la biblioteca Scikit-Learn. instalado junto con el paquete de instalación de Anaconda. La discusión sobre la noción de canales de imagen fue bien pensada y demostrada con un ejemplo simple pero elegante.
Histogramas
Aquí el autor analiza el uso de histogramas para representar la distribución de intensidades a lo largo de canales individuales de una imagen en color, así como para una imagen en escala de grises. Hay ejemplos que muestran cómo usar la biblioteca OpenCV para manipular los datos de píxeles contenidos en una imagen digital en estructuras de datos apropiadas para mostrar como un histograma usando la biblioteca matplotplib.
Aunque la cobertura en esta sección es breve, va al grano y sienta las bases para temas posteriores del curso.
Geometría y manipulación de píxeles
Te puede interesar:Programación Python en modo interactivo vs scriptEn esta sección, el autor comienza demostrando que los datos de imágenes digitales que OpenCV presenta al usuario no son más que una matriz multidimensional de números enteros. Esto luego se elabora más a través de ejemplos de manipulación de valores de píxeles individuales utilizando la indexación numpy familiar. Luego, el autor avanza en cómo usar la biblioteca OpenCV para dibujar líneas simples y otras formas geométricas.
Después de demostrar cómo dibujar formas geométricas básicas, el autor profundiza en la manipulación de imágenes. Los temas de voltear, escalar y rotar se tratan con más ejemplos de codificación.
Fue durante esta sección que noté que comencé a sentirme un poco frustrado. Hubo momentos en los que el autor parecía un poco apresurado y se movió rápidamente sobre los detalles de varios parámetros del método de la biblioteca. También hubo una ruptura en la coherencia en esta sección. Por ejemplo, en las secciones anteriores a esta, todas las imágenes y los scripts utilizados en los ejemplos se proporcionaron como recursos descargables. Sin embargo, en esta sección se dejaron fuera del recurso disponible un par de imágenes y no se proporcionaron varios de los scripts de ejemplo, lo que hace que sea más difícil de seguir, pero no imposible. Debo señalar que cuando seguí la codificación de los ejemplos, funcionaron perfectamente bien usando una imagen alternativa.
Proyecto – Utilidad de recortes
Esta sección es una demostración del uso de la biblioteca OpenCV para capturar eventos del mouse en una imagen mostrada para seleccionar y generar una imagen recortada del original.
Me alegró mucho ver esta sección en el curso. Personalmente, me gusta cuando un curso se toma el tiempo para demostrar las utilidades de una tecnología para producir algo que demuestre la funcionalidad, como en el caso de una herramienta de recorte primitiva en esta sección.
Filtrado, difuminado y eliminación de ruido
Te puede interesar:Programación funcional en PythonEncontré esta sección bastante fascinante. Quizás esto se deba a que el concepto de aplicar técnicas de filtrado para mejorar las imágenes digitales es uno que encuentro notable. Sin embargo, creo que el instructor hace un trabajo suficientemente sólido al explicar por qué es útil y demuestra cómo lograrlo. Desafortunadamente, nuevamente hay una ruptura en la coherencia porque el autor no proporciona la imagen o el script de ejemplo utilizado.
Todo sobre los umbrales
Esta sección comienza con una explicación simple de qué es el umbral. Después de eso, el instructor desafía al estudiante con un ejercicio de codificación para crear una imagen de umbral manualmente sin la ayuda de la biblioteca OpenCV. Por supuesto, el instructor brinda una solución, pero siempre me gusta cuando este tipo de desafíos se hacen en los cursos. No solo refuerza la parte de «cómo» de un concepto, sino que también demuestra «por qué» una biblioteca como OpenCV es tan valiosa.
Proyecto: hacer un filtro de brillo personalizado
En esta sección, el instructor demuestra cómo crear un filtro de una imagen utilizando técnicas de filtrado adaptativo. Además de filtrar, demuestra cómo modificar una imagen cambiando los valores de color de los píxeles individuales, volviendo a señalar la estructura de datos tridimensional de las imágenes digitales y el hecho de que son simplemente matrices multidimensionales de números.
Esta sección se sintió un poco apresurada, pero el contenido se presentó con un ejemplo sólido y se proporcionaron tanto el código como las imágenes que se estaban manipulando para que el estudiante tenga la capacidad de explorar más el tema.
Superposición de imágenes
Te puede interesar:Clasificación de texto con Python y Scikit-LearnNuevamente, esta sección fue un poco apresurada y me hubiera gustado tener mejores explicaciones de qué parámetros se estaban modificando, así como su impacto en la superposición de imágenes. Nuevamente hubo una ruptura en la consistencia por la cual no se proporcionaron el código de ejemplo y las imágenes, lo que deja al estudiante un poco fuera del circuito en su capacidad para seguir el curso.
Trabajar con videos
En esta sección, el instructor demuestra cómo usar la biblioteca OpenCV para interactuar con una cámara web. En primer lugar, muestra cómo capturar fotogramas y mostrarlos en una ventana. Luego continúa mostrando cómo manipular la representación de color de la transmisión de video en función de las entradas del teclado.
Una vez más, los ejemplos de codificación no se proporcionan para esta sección.
Dominar los contornos
Como sugiere el título, esta sección cubre la noción de contornos que delimitan objetos en una imagen. Aquí el instructor hace un buen trabajo al usar algunas imágenes caseras bastante simples de formas monocromáticas simples para simplificar los conceptos.
Sin embargo, al igual que en otras secciones de este curso, creo que se pasó por alto una cantidad significativa de detalles en la explicación de los diversos parámetros que se utilizan para ajustar los resultados de los métodos OpenCV. Encuentro esto un poco frustrante y siento que simplemente decir que un tema «es complicado y debes jugar con los valores hasta que obtengas el resultado deseado» no es una explicación suficiente.
Te puede interesar:Importaciones relativas vs absolutas en PythonProyecto – Detección de vehículos
La sección final de este curso demuestra cómo crear una aplicación que detecta vehículos a partir de datos de imágenes de tráfico. Como mencioné anteriormente, realmente aprecio cuando los cursos crean una aplicación funcional que demuestra el valor real de la tecnología que se enseña. Felicito al autor por incluir esta sección a pesar de que era un poco compleja y difícil de comprender, pero definitivamente saqué valor de ella.
Conclusión
En este artículo me he esforzado por ofrecer una descripción general justa y equilibrada del curso. Manos a la obra con visión artificial con OpenCV y Python por Shrobon Biswas en Udemy. Al hacerlo, mi objetivo ha sido describir el contenido cubierto y tener cuidado de no divulgar los detalles del contenido real, ya que creo que el instructor ha proporcionado valor a la comunidad de aprendizaje en línea.
Como dije al principio, llegué a este curso con muy poca comprensión de los conceptos de Visión por Computadora, armado solo con una comprensión razonable del lenguaje de programación Python. Dicho esto, siento que pude aprender una cantidad encomiable sobre cómo usar la biblioteca OpenCV para interactuar y manipular tanto el contenido de imagen como de video. En mi opinión, creo que podría haber habido una mejor cobertura de los detalles de algunas de las funciones de la biblioteca y la teoría subyacente, pero no estoy seguro de que ese fuera el objetivo principal de este curso.
Tengo algunas quejas sobre el aspecto organizativo de la estructura y el contenido del curso, ya que parecía un poco confuso en ciertas partes. Por ejemplo, hubo más de unos pocos casos en los que no se proporcionaron imágenes de ejemplo y guiones y el autor menciona volver para cubrir diferentes temas, que luego nunca ocurren.
En general, diría que este curso es una buena compra si lo puede encontrar en oferta, pero el precio base de $ 199 probablemente sea demasiado alto para el valor proporcionado.
Como siempre, gracias por leer y no dude en comentar o criticar a continuación.
Te puede interesar:Optimización del rendimiento de Python