Motor de búsqueda "Imagen"

Iniciado por SγиtαxEяяoя, 13 Agosto 2013, 19:35 PM

0 Miembros y 1 Visitante están viendo este tema.

SγиtαxEяяoя

Hola, Hace rato no me paso por el foro.

Quería hacer una pregunta, Bueno estoy pensando en hacer un "Bot"
Veras, tengo la idea de hacer que este programa trabaje por si solo, por medio de un motor de búsqueda, algo como una comparación de imágenes

Algo como esto, es un ejemplo :p

Si esta "imagen" se parece a esta "imagen" Entonces
Dar click encima de la imagen y continuar hasta encontrar otra "imagen"
Pero si esta "imagen" no se parece
Continuar dando clik hasta encontrar la "imagen"

No se si me explico bien  :)



Eleкtro

#1
¿Pretendes codear tu sólo un sistema OCR? xD, nunca va a poder ser comparable con uno profesional donde lo desarrollan grupos de personas...

...Segúramente ya existan APIS profesionales para hacer comparaciones de imágenes para comparar el porcentaje de coincidencia entre una imágen y otra... busca servicios online de esos donde subes una imágen y te buscan imágenes parecidas, y luego comprueba a ver si ese servicio dispone de una api para .net...

Quizás esto sirva, no he mirado muy bien pa que sirve... http://code.google.com/p/aforge/ + http://www.google.com/search?q=vbnet+api+compare+image&ie=utf-8&oe=utf-8&lr=lang_en

EDITO: http://stackoverflow.com/questions/8381033/comparing-two-images-visually

Saludos.








SγиtαxEяяoя

Hola Electro, Gracias por responder :p

Pero no me refiero a que busque un grado de "Coincidencia"

Mira es algo asi "pixel search and mouse click." algo relacionado con el "Auto-IT"

Pero en llegando al punto, este programa sera para un juego..

Esto es algo de codigo que he encontrado por hay en Google  :silbar:


public static Point PixelSearch(Rectangle rect, int PixelColor, int Shade_Variation)
        {
            Color Pixel_Color = Color.FromArgb(PixelColor);

            Point Pixel_Coords = new Point(-1, -1);
            Bitmap RegionIn_Bitmap = CaptureScreenRegion(rect);
            BitmapData RegionIn_BitmapData = RegionIn_Bitmap.LockBits(new Rectangle(0, 0, RegionIn_Bitmap.Width, RegionIn_Bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            int[] Formatted_Color = new int[3] { Pixel_Color.B, Pixel_Color.G, Pixel_Color.R }; //bgr

            unsafe
            {
                for (int y = 0; y < RegionIn_BitmapData.Height; y++)
                {
                    byte* row = (byte*)RegionIn_BitmapData.Scan0 + (y * RegionIn_BitmapData.Stride);

                    for (int x = 0; x < RegionIn_BitmapData.Width; x++)
                    {
                        if (row[x * 3] >= (Formatted_Color[0] - Shade_Variation) & row[x * 3] <= (Formatted_Color[0] + Shade_Variation)) //blue
                        {
                            if (row[(x * 3) + 1] >= (Formatted_Color[1] - Shade_Variation) & row[(x * 3) + 1] <= (Formatted_Color[1] + Shade_Variation)) //green
                            {
                                if (row[(x * 3) + 2] >= (Formatted_Color[2] - Shade_Variation) & row[(x * 3) + 2] <= (Formatted_Color[2] + Shade_Variation)) //red
                                {
                                    Pixel_Coords = new Point(x + rect.X, y + rect.Y);
                                    goto end;
                                }
                            }
                        }
                    }
                }
            }

        end:
            return Pixel_Coords;
        }

        private static Bitmap CaptureScreenRegion(Rectangle rect)
        {
            Bitmap BMP = new Bitmap(rect.Width, rect.Height, PixelFormat.Format24bppRgb);
            Graphics GFX = System.Drawing.Graphics.FromImage(BMP);
            GFX.CopyFromScreen(rect.X, rect.Y, 0, 0, rect.Size, CopyPixelOperation.SourceCopy);
            return BMP;
        }

WHK

Dificil cosa pides, eso no es muy fácil de hacer.

Creo recordar algunos códigos super utiles que te retornan el valor del color mas predominante de una imagen, algo asi como por ejemplo si tienes una foto de un bosque entonces te retorna verde oscuro y verde claro, eso es como lo mas similar que alguna ves encontré de lo que puedas necesitar.

Ahora... preguntame como se llama xD porque no lo recuerdo, pero habian varios codigos de ejemplos para varias cosas pero al final todos hacian lo mismo, recuerdo que habia una librería de pago y otras libres.

Windows 7 usa eso para darle fondo a los iconos de la barra de tareas, por ejemplo firefox se torna naranjo al rededor, unity de ubuntu hace lo mismo, todo el entorno se adapta a los colores de la imagen que pones de fondo de escritorio de manera automática.

Daré un vistazo por ahi aver si los puedo encontrar.

SγиtαxEяяoя

Hechen un vistaso a lo que he encontrado por el google :p


http://www.sythe.org/programming-general/388358-macro-functions-procedures.html

Con algo de ayuda y tiempo creo que seria posible lograr hacer esto  ;-)

Maurice_Lupin

Para imagenes nada mejor que la teoria de procesamiento digital, he visto code en java para leer captchas, lo que hacen es sacar el promedio de los colores de los pixeles, y luego si el pixel es menor que el promedio entonces es considerado posible letra.

Haciendo el promedio podrías saber el color predominante, por ejemplo en una imagen de un cielo predominaria el azul.

http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/nieto_b_d/capitulo2.pdf

Saludos.
Un error se comete al equivocarse.