Я хочу, чтобы заполнить цвет в белой области для краски на основе применения поэтому, пожалуйста, дайте мне предложение о том, как сделать эту работу ..Как заполнить цвет изображения в определенной области?
ответ
Я нашел решение с Заливкой algoritham заливку
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(n.x, n.y) != targetColor)
continue;
Point w = n, e = new Point(n.x + 1, n.y);
while ((w.x > 0) && (bmp.getPixel(w.x, w.y) == targetColor)) {
bmp.setPixel(w.x, w.y, replacementColor);
if ((w.y > 0) && (bmp.getPixel(w.x, w.y - 1) == targetColor))
q.add(new Point(w.x, w.y - 1));
if ((w.y < bmp.getHeight() - 1)
&& (bmp.getPixel(w.x, w.y + 1) == targetColor))
q.add(new Point(w.x, w.y + 1));
w.x--;
}
while ((e.x < bmp.getWidth() - 1)
&& (bmp.getPixel(e.x, e.y) == targetColor)) {
bmp.setPixel(e.x, e.y, replacementColor);
if ((e.y > 0) && (bmp.getPixel(e.x, e.y - 1) == targetColor))
q.add(new Point(e.x, e.y - 1));
if ((e.y < bmp.getHeight() - 1)
&& (bmp.getPixel(e.x, e.y + 1) == targetColor))
q.add(new Point(e.x, e.y + 1));
e.x++;
}
}}
наводнения в андроиде:
Посмотреть этот FloodFill
Nice one Но если я просто добавлю этот алгоритм в Мое приложение для Android, если я вызову функцию FloodFill (с соответствующими атрибутами), тогда это будет работать? И что мне нужно дать в качестве атрибута Point в этой функции? –
благодарит @ Хардик, это действительно хорошо написанный алгоритм. но для Android-телефона это кажется очень медленным. знаете ли вы какой-либо другой способ заполнения наводнений? –
эта ссылка настолько быстра: http://stackoverflow.com/a/17426163/401403 – Arash
Вот быстрое приложение с помощью Python и OpenCV (должны быть доступны на Android, если вы попытаетесь достаточно трудно):
"""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)
Каждый раз, когда пользователь нажимает на изображение, приложение Flood-заливки, используя расположение в качестве затравки. Цвет выбирается случайным образом. Вы можете изменить допуски, изменив значение TOL (или TOL_BGR). Вот результат после того, как пару кликов:
Общий алгоритм такой же, независимо от того, какие технологии вы используете.
не могли бы вы отправить исходный код, потому что я не мог понять эту часть – dineshprasanna
Нет, я не буду посылать вам по электронной почте ваш код. Во всяком случае, исходный код в моем ответе. Если вы ничего не понимаете, пожалуйста, прочитайте документацию по соответствующим функциям - она легко доступна. – misha
ok не проблема, спасибо за ваш ответ, я попробую – dineshprasanna
1) Иметь дробить изображение для каждого цвета части отдельно с таким же размером поскольку фактическое изображение и другая часть являются прозрачными. 2) У вас есть полное изображение с каждой порцией в разных цветах в папке ur drawable - это всего лишь ссылочное изображение.
3) Добавьте все разделить изображения в макете кадра и установить все распалось невидимым изначально и установить видны реальное изображение только
4) Горячий код цвета для каждого разделить от ур эталонного изображения (step2) для Eg handSplitImageColor = зеленый;
4) Установить слушатель для компоновки кадра выяснить, х и у позиции и передать й и у позиции на уры опорного изображения (этап 2) и выяснить, цвет в этом конкретном месте и соответствовать цвету с шагом- и заполнить конкретное в этом изображении и установить видимость, истинную для этого разбитого изображения. Таким образом, только эта часть будет заполнена цветом, поскольку другая часть прозрачна.
Это шаги, которые я использовал для одного из моих проблем.
Но я не думаю, что это лучшее решение, но оно хорошо работает для меня.
- 1. Android: Как заполнить цвет только для определенной части изображения?
- 2. Как изменить цвет графика в определенной области?
- 3. Изменить цвет изображения в определенной области в android
- 4. Как заполнить другой цвет в той же области изображения (Цвет над другим цветом в той же области изображения)?
- 5. Показаны изображения только в пределах определенной области
- 6. Выбор определенной области из изображения
- 7. Как заполнить цвета в определенной области в R?
- 8. Отображение определенной области растрового изображения в изображенииView
- 9. iOS как цвет определенной части изображения?
- 10. Как изменить цвет определенной области дороги в Картах Google?
- 11. Изменение области изображения на «цвет» в c
- 12. Заполните цвет растрового изображения в android
- 13. Получение всех координат полигона определенной области изображения?
- 14. Как заполнить цвет над другим цветом на той же области изображения в андроиде?
- 15. Как измерять изменения в цветах пикселей в определенной области изображения
- 16. Протяжение/масштабирование определенной области обзора/растрового изображения
- 17. Ограничение пиксельных шейдеров по определенной области изображения
- 18. Применение алгоритма к определенной области изображения
- 19. Как увеличить масштаб изображения в определенной области окна DirectShow?
- 20. OpenCV: как итерации каждого пикселя в определенной области изображения
- 21. glMaterialfv в определенной области
- 22. Гиперссылка в определенной области
- 23. Как заполнить цвет треугольником
- 24. Вычислить средний цвет области изображения image
- 25. Изменить цвет области области
- 26. Сохранение изображения из определенной области GUI в MATLAB
- 27. Как определить цвет любого положения области SVG
- 28. Как я могу частично раскрыть и частично заполнить цвет изображения
- 29. Перемещение изображения в определенной области прикосновением с помощью CGAffineTransformTranslate
- 30. Как перекрасить изображение по определенной области?
Взгляните на классический алгоритм заполнения залива: http://en.wikipedia.org/wiki/Flood_fill – Jave
Привет, Вот ссылка [1], чтобы получить точки изображения. означает только фактическую часть изображения и исключает прозрачную часть. но я не могу связать этот район. [1]: http://brownandroidattack.blogspot.com/2010/03/image-transparency-aka-absurd.html –
спасибо Jave для информации заливка alogrithm –