Cómo llenar el color en la imagen en el área en particular?

Quiero rellenar el color en el área blanca para la aplicación basada en pintura, así que por favor, dame sugerencia para saber cómo hacer este trabajo.

Introduzca aquí la descripción de la imagen

    3 Solutions collect form web for “Cómo llenar el color en la imagen en el área en particular?”

    He encontrado la solución con el algoritmo de relleno Flood

    private void FloodFill(Bitmap bmp, Point pt, int targetColor, int replacementColor){ Queue<Point> q = new LinkedList<Point>(); q.add(pt); while (q.size() > 0) { Point n = q.poll(); if (bmp.getPixel(nx, ny) != targetColor) continue; Point w = n, e = new Point(nx + 1, ny); while ((wx > 0) && (bmp.getPixel(wx, wy) == targetColor)) { bmp.setPixel(wx, wy, replacementColor); if ((wy > 0) && (bmp.getPixel(wx, wy - 1) == targetColor)) q.add(new Point(wx, wy - 1)); if ((wy < bmp.getHeight() - 1) && (bmp.getPixel(wx, wy + 1) == targetColor)) q.add(new Point(wx, wy + 1)); wx--; } while ((ex < bmp.getWidth() - 1) && (bmp.getPixel(ex, ey) == targetColor)) { bmp.setPixel(ex, ey, replacementColor); if ((ey > 0) && (bmp.getPixel(ex, ey - 1) == targetColor)) q.add(new Point(ex, ey - 1)); if ((ey < bmp.getHeight() - 1) && (bmp.getPixel(ex, ey + 1) == targetColor)) q.add(new Point(ex, ey + 1)); e.x++; } }} 

    Inundación llenar en androide:

    Vea este FloodFill

    Esta es una aplicación rápida que utiliza Python y OpenCV (debería estar disponible en Android si lo intentas con suficiente dificultad):

     """Flood fills with random color on click. Press `q' to exit.""" import cv import sys import random TOL = 10 TOL_BGR = (TOL, TOL, TOL, 0) def click(event,x,y,flags,im): if event == cv.CV_EVENT_LBUTTONDOWN: b,g,r = [ random.random() * 255 for i in range(3) ] cv.FloodFill(im, (x,y), (b,g,r,0), TOL_BGR, TOL_BGR) im = cv.LoadImage(sys.argv[1], cv.CV_LOAD_IMAGE_COLOR) cv.NamedWindow(__file__, 1) cv.SetMouseCallback(__file__, click, im) while True: cv.ShowImage(__file__, im) key = cv.WaitKey(33) if chr(key & 0xff) == 'q': break cv.SaveImage('floodfill.png', im) 

    Cada vez que el usuario hace clic en una imagen, la aplicación se llena utilizando la ubicación de clic como semilla. El color se selecciona al azar. Puede modificar las tolerancias modificando el valor de TOL (o TOL_BGR). Aquí está el resultado después de un par de clics:

    Introduzca aquí la descripción de la imagen

    El algoritmo general es el mismo independientemente de qué tecnología utilice.

    1) Tenga la imagen dividida para cada porción del color por separado con el mismo tamaño que la imagen real y la otra porción es transparente. 2) Tenga la imagen completa con cada pintura de la porción en diverso color en la carpeta drawable del ur – esto es apenas imagen de la referencia.

    3) Agregue todas las imágenes divididas en la disposición del marco y ajuste toda la división para arriba invisible inicialmente y fije visible a la imagen real solamente

    4) Código caliente el color para cada separación para arriba de la imagen de referencia del ur (step2) para Eg handSplitImageColor = verde;

    4) Ponga el oyente para el diseño de trama averigüe la posición x e y y pase la posición xyy a la ur la imagen de referencia (paso 2) y averigüe el color en esa ubicación particular y empareje el color con el paso 4 y rellene el En esa imagen y establecer la visibilidad verdadera para esa imagen dividida. Tan solo esa porción se llenará de color ya que la otra porción es transparente.

    Estos son los pasos que he usado para uno de mis mismos tipos de problemas.

    Pero no creo que esta sea la mejor solución, pero funciona bien para mí.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.