Mi primer proyecto: buscador inverso de imágenes

Find AI Tools
No difficulty
No complicated process
Find ai tools

Mi primer proyecto: buscador inverso de imágenes

Tabla de contenidos

  1. Introducción
  2. El primer proyecto que hice
  3. Cómo funciona el programa Rayji
  4. El proceso de búsqueda de imágenes
  5. Mi experiencia con el lenguaje de programación C
  6. Lecciones aprendidas y mejoras
  7. Cambios que haría si volviera a hacerlo
  8. Otras características y proyectos relacionados
  9. Conclusión
  10. Preguntas frecuentes

Mi primer proyecto: Programa de búsqueda inversa de imágenes de anime

¡Hola a todos! ¡Bienvenidos de nuevo a otro video! En este video, quiero compartir con ustedes el primer proyecto que realicé. Pensé que esto sería Algo divertido de hacer, echando un vistazo a lo que hice en el pasado y las cosas que aprendí en el camino. Por lo general, mis proyectos paralelos se basan en cosas que quiero aprender más o en cosas de uso personal. Por lo tanto, esto también les dará una idea de mis intereses en el pasado. Espero que disfruten el video y saquen algo de inspiración de él.

1. Introducción

El primer proyecto que hice se llama "Rayji". Comencé a trabajar en él durante las vacaciones de invierno de mi primer semestre en la universidad. En ese momento, solo conocía los lenguajes de programación Python y C. Aprendí Python en mis cursos escolares y aprendí C en el grado 12 a través de un curso en línea llamado CS50. Como ya estaba bastante familiarizado con Python gracias al trabajo escolar, decidí usar C para este proyecto.

2. El primer proyecto que hice

El programa Rayji es un programa de búsqueda inversa de imágenes, pero específicamente para imágenes de anime. El nombre "Rayji" se me ocurrió simplemente traduciendo palabras en inglés al japonés. Si lo traducimos, podemos ver que el nombre significa "similar" en inglés. Esto se debe a que este programa proporciona resultados similares a la imagen que se proporciona.

Durante ese tiempo, estaba muy metido en el anime y, por alguna razón, me gustaba guardar imágenes que veía en Facebook y otros sitios web. ¡Un saludo a Curie's por publicar excelentes imágenes en Facebook! Sin embargo, Facebook siempre comprimía las imágenes, por lo que nunca tenía una versión de Alta calidad. Si quería usarlas como fondo de pantalla, tenía que buscar en línea una imagen de mayor resolución. Con el tiempo, la cantidad de imágenes que guardé se acumuló y terminé con muchas imágenes de las que quería encontrar una versión de mayor resolución. Fue entonces cuando decidí escribir este programa y automatizar todo.

3. Cómo funciona el programa Rayji

El programa Rayji utiliza un sitio web llamado IQDB.org para realizar la búsqueda inversa de imágenes de anime. Allí, podemos seleccionar una imagen y enviarla para obtener resultados basados en la imagen que hemos enviado. Este sitio web tiene una desventaja, y es que no cuenta con una API oficial. Por lo tanto, hay que analizar el HTML manualmente, lo cual es lo que hace mi programa.

Para utilizar el programa, primero debemos clonar el repositorio. Luego, ingresamos a la carpeta "source" y lo compilamos usando el comando "make". Después, lo instalamos usando el comando "sudo make install". Sin embargo, no necesitaré realizar esta instalación porque ya lo tengo instalado en mi sistema.

Al ejecutar el programa, se muestra un mensaje de ayuda si no se proporcionan archivos. Podemos utilizar la opción "-t" para mostrar solo las imágenes con un cierto porcentaje de similitud. La opción "-T" muestra las dos etiquetas asociadas con cada imagen. También hay una opción "-y" para que el usuario no tenga que proporcionar ninguna entrada. Solo descarga el resultado con la similitud más alta. Pruebo esto usando la misma imagen, mostrando las etiquetas asociadas y proporcionando la misma imagen. Ahora podemos ver que obtenemos dos resultados: uno de Sankaku Channel y otro de Denver Roo.

4. El proceso de búsqueda de imágenes

El funcionamiento del programa Rayji se basa en cargar la imagen en IQDB.org. En la versión original del programa, codifiqué esta parte de una manera un tanto extraña. En lugar de enviar una solicitud HTTP directamente, lo hice de manera similar a como lo haría un usuario. Iba al sitio web, buscaba el campo de entrada específico y establecía ese campo como la imagen. Luego, enviaba el formulario y obtenía el HTML como respuesta. Después de aprender sobre vectores y estructuras de datos en mis cursos de algoritmos y estructuras de datos, decidí cambiar esto para que funcionara de manera más eficiente.

Después de obtener el HTML, analizo el contenido y lo agrupo en una lista enlazada de estructuras. Estas estructuras contienen el enlace a la imagen, el porcentaje de similitud y las dimensiones de la imagen. Luego, le solicito al usuario que elija qué imagen desea descargar. Genero un enlace de API específico para ese sitio web y lo visito para obtener el enlace de descarga y las etiquetas. Repito este proceso para cada sitio web que quiero admitir, lo cual resultó ser un poco tedioso.

Finalmente, descargo la imagen y el programa llega a su fin.

5. Mi experiencia con el lenguaje de programación C

Mirando hacia atrás, si tuviera que hacer esto nuevamente, cambiaría varias cosas. En primer lugar, creo que usaría un lenguaje de programación diferente. C no es muy amigable para el usuario y no ofrece mucho en su biblioteca estándar. Tal vez algo como Go, Rust o Python sería más adecuado. Especialmente porque las ventajas de rendimiento de C no se hacen realmente evidentes en este programa, ya que el cuello de botella es la red.

6. Lecciones aprendidas y mejoras

Este proyecto fue una experiencia de aprendizaje muy buena. Me familiaricé mucho con C y la biblioteca Curl. Estoy muy contento de haber vuelto y haber mejorado el proyecto con mis nuevos conocimientos adquiridos en la universidad. Incluso me llevó a implementar una función similar en otros proyectos, como el bot de Discord llamado "Bob" que hice con mis amigos. Este bot tiene una función llamada "Sauce" que realiza una búsqueda inversa de imágenes utilizando IQDB y devuelve los resultados. También tiene una función llamada "daily" que analiza varios sitios web en busca de las últimas imágenes y las envía al servidor de Discord para que todos las vean.

7. Cambios que haría si volviera a hacerlo

Si tuviera que hacer este proyecto nuevamente, cambiaría muchas cosas. En primer lugar, usaría un lenguaje de programación diferente, como mencioné anteriormente. También cambiaría la forma en que manejo el formulario HTML. En lugar de buscar el campo de entrada y enviar el botón de envío de forma programática, simplemente enviaría la solicitud POST directamente. Además, hay muchos otros ajustes y mejoras que podría realizar para hacer el programa más eficiente y fácil de usar.

8. Otras características y proyectos relacionados

Además del proyecto Rayji, he trabajado en otros proyectos relacionados. Uno de ellos es un bot de Discord llamado Bob, como mencioné anteriormente. Este bot tiene una función llamada "sauce" que realiza una búsqueda inversa de imágenes utilizando IQDB y proporciona los resultados. Otra característica interesante es "daily", donde analiza varios sitios web en busca de las últimas imágenes y las envía al servidor de Discord para que todos las vean.

9. Conclusión

En resumen, mi primer proyecto fue el programa de búsqueda inversa de imágenes de anime llamado Rayji. Aprendí mucho durante el desarrollo de este proyecto y tuve la oportunidad de mejorar y aplicar esos conocimientos en proyectos posteriores. Si bien hubo algunas limitaciones y áreas de mejora, en general, fue una experiencia valiosa y me permitió explorar mi interés en la programación y el anime.

10. Preguntas frecuentes

Q: ¿Cuál fue la inspiración detrás de crear el programa Rayji? A: La necesidad de encontrar imágenes de mayor resolución de anime que había guardado en Facebook y otros sitios web fue lo que me inspiró a desarrollar este programa.

Q: ¿Cómo se compara Rayji con otros programas de búsqueda inversa de imágenes? A: Rayji está diseñado específicamente para imágenes de anime y utiliza el sitio web IQDB.org como fuente de búsqueda inversa. Aunque no cuenta con una API oficial, el programa es capaz de extraer y analizar los resultados utilizando técnicas de análisis de HTML.

Q: ¿Tienes planes de mejorar o expandir el programa Rayji en el futuro? A: Actualmente, el programa cumple con mis necesidades y expectativas. Sin embargo, siempre estoy abierto a mejoras y nuevas características si surgen nuevas ideas o solicitudes de los usuarios.

Q: ¿Recomendarías aprender C para desarrollar este tipo de programas? A: Personalmente, considero que C es un lenguaje poderoso, pero no necesariamente es el más adecuado para este tipo de proyectos. Otros lenguajes como Python o Rust podrían ser más fáciles de aprender y utilizar con bibliotecas más extensas que simplificarían el desarrollo de programas similares.

Q: ¿Puedes proporcionar enlaces a los proyectos mencionados, como Bob y otros? A: Por supuesto. A continuación, se encuentran los enlaces a los proyectos mencionados:

¡Gracias por leer y espero que hayas disfrutado del artículo! Si tienes más preguntas, no dudes en dejarlas en los comentarios.

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.