Bienvenido a OMES
Recuerdo el momento en el que quería aprender a realizar aplicaciones de visión por computador, tenía conocimientos básicos de programación, sin embargo nunca había usado python y peor aún, no sabía de alguna librería que me permitiera hacerlo. Sin embargo estaba muy entusiasmada pues quede fascinada con aquellos rectángulos verdes que identificaban cierto contenido de la imagen, ¡parecía algo mágico!, y yo también quería hacerlo. Entonces me puse manos a la obra, pero tenía un problema, ¿Por dónde debía empezar?, ¿qué lenguaje de programación y librería usar?. Fue entonces que busque información en internet. Navegando por google, encontré algunos artículos y en youtube algunos videos, y fue allí donde empecé mi viaje, que hasta ahora se sigue desarrollando.
Me dediqué a estudiar un poquito más a fondo algunas de las funciones que tenía OpenCV, sin embargo habían cosas que entendía tiempo después de leerlo por primera vez, entonces decidí realizar ejemplos de pequeñas aplicaciones por mí misma, para practicar un poco. Pasado el tiempo comencé a notar que muchísima información que necesitaba estaba en inglés, y no es que esté mal, sino que también me hubiera gustado encontrar información en español, que me ayudara a comprender más rápido ciertos conceptos y procesos.
A principios del 2019 comencé con mi canal de youtube, llamado OMES, y he estado subiendo contenido, específicamente de programación entorno a visión por computador, y ahora para complementar aquella información he construido esta página web, en donde me centraré específicamente en el desarrollo de este blog, en donde seguiré hablando de este tema, y más que nada acerca de programación en Python y OpenCV (en un principio, luego iré añadiendo otras librerías).
La razón detrás del uso de Python como lenguaje de programación es debido a la facilidad en su sintaxis, su simplicidad, fácil aprendizaje y sobre todo la comunidad, lo que hace que se pueda encontrar gran cantidad de información, no solo en el área de visión artificial sino en otras áreas tales como aplicaciones móviles/web, IOT, entre otras, que convierten a este en uno de los lenguajes más amados por los programadores en 2019, según stackoverflow.
OpenCV por otro lado es una librería multiplataforma que puedes usar en GNU/Linux, Mac OSX, Windows y Android, además se emplea en lenguajes de programación tales como java, C#, Objetive C y por supuesto, Python.
Quiero ser breve en este post, pues tenemos mucho, muchísimo contenido en el cual trabajar. En un principio veremos como leer, guardar y visualizar una imagen, luego un video con OpenCV, explicaré algunas de las funciones que esta nos ofrece, y realizaré tutoriales también.
Todo esto ya lo he tratado en mi canal de youtube, sin embargo es necesario brindarte las líneas de programación usadas en cada video, así que este blog estará trabajando en conjunto con esa información ya tratada.
Pues bien, si tú también sientes esa pasión y curiosidad por este campo, te invito a que estés atento a mi contenido, si deseas puedes dejarme un comentario con sugerencias, opiniones y ¿por qué no?, correcciones, dentro del respeto y educación, sin utilizar palabras ofensivas hacía mí u otra persona dentro de los comentarios.
Entonces te invito a mi pequeño lugar en la web, que espero se vuelva cada vez más grande y te ayude mucho a crecer. ¡Hasta pronto!
hola gaby …pz yo tambien quede fascinado cuando uno de nuestros docentes de la universidad nos emvito a una de sus exposiciones… y pz me llamo mucho la atencion el la rama de vision artificial…tambien he visto tus videos… gracias por tu aporte…que sigan los exitos
En realidad que bonito que a tí también te haya gustado el campo, me parece apasionante, por ello creo que es importante que nos ayudemos entre todos a mejorar y a tener más contenido en español. Por cierto, gracias por escribir el primer comentario en mi Blog 😀
Hola Gabriela, felicito la iniciativa que tienes, y esas ganas de enseñar lo que de seguro te ha costado mucho tiempo navegando entre foros y turoriales. Te comento un poco acerca de lo que tenía pensado para desarrollar un proyecto, se trata de procesar archivos PDF y excel, lo estoy escribiendo en python (solo tengo unos dos meses), y llegué a la conclusión que debo pasar el pdf a imagen – cosa que me costó tiempo hacerlo, lo de excel si va por otro camino (uso Pandas), así que me estoy enfocando en el tratamiento de imágenes pero con la librería Pillow y Wand, en un momento no sabía como agregar esos rectángulos verdes que tanto había visto en los papers (y que no mencionaban nada de código) y pues en sí había revisado tesis y trabajos, diversos blogs, pero mencionaban a la librería OpenCV, la cual no sé porque(?) me resistía a trabajar. Ahora voy un día revisando códigos de OpenCV (ya termina en una hora mi horario de trabajo) y modificando algo de código creo que puedo hacer que se intercambien el tratamiento de imágenes con ambas librerias Pillow y OpenCV. El punto en verdad álgido del asunto es que aplico pytesseract a una imagen que contiene cuadros de información y estos no son predeterminados en una plantilla, pero viendo a priori uno de tus vídeos de detección de figuras geométricas, ¡He visto una luz! Trataré de aplicar un poco de código para hacer la detección de esos cuadrillos que de verdad molesta al OCR. Te dejaré mi correo, pues quisiera hacerte unas consultas y también compartir algo de lo poquito que he aprendido en python.
Bendiciones para ti y tu casa.
Atte. Dennis Misahuamán.
Hola Dennis, muchas gracias por tus palabras, las aprecio mucho. De hecho si entiendo cuan difícil es incursionar en el campo, ya que no hay mucho contenido en español y el que hay es a veces un poco complicado de entender. Te deseo éxitos en el proyecto que estás desarrollando y justamente estoy preparando un video sobre OCR para la detección de placas vehiculares (pronto saldrá). Puedes escribirme por cualquier duda y si es que tengo el conocimiento podría sugerirte algo, caso contrario seguiré estudiando e investigando 🙂 Cuídate mucho y que bueno que te hayas animado a usar OpenCV.
Hola Gabriela agradezco tu gentil respuesta, espero te encuentres bien, te cuento que me ha ayudado mucho el vídeo que publicaste «detectando figuras geométricas», gracias mil. Como estoy en un documento y este está pixeleado pues es una imagen, le mandé una condicional approx == 4 para que reconozca los recuadros contenidos (rectángulos), solo que los numerillos y letras a nivel pixel también forman micro rectángulos (jaja), no se si influye el no usar la detección de bordes canny , si fuese así corrígeme. Intentaré validar mis salidas extrayendo el área de esos contornos, si lo has trabajado me podrías ayudar por favor. Estaré atento a cuando salga el vídeo que mencionas de OCR, yo uso, como mencioné en el primer comentario, pytesseract, lo trabajo con tesseract v5.0.0 alpha, no he ahondado mucho en los parámetros y métodos que proporciona, solo el «texto = pytesseract.image_to_string(imagen)» , (jaja), a lo mejor puedas comentar algunos métodos como el de orientación y lenguaje, y también lo de entrenamiento (que de eso si no tengo idea). Aplaudo tu trabajo, sigue adelante y cuídate mucho tu también.
Atte. Dennis Misahuamán.
Hola Dennis, si entiendo que pueden formarse muchos pequeños rectángulos, y es acertada tu idea de identificar al rectángulo que deseas a través del área, para ello podrías usar un ‘for’, para recorrer cada contorno, y a su vez aplicar cv2.contourArea(contorno), para obtener el área. Eso te puede ayudar bastante. Gracias por estar al pendiente