Как я могу раскрасить свой эскиз с помощью инструмента «Перо» в пределах ограниченных границ, используя «Обнаружение контуров» / «Обнаружение контуров» в ios swift? - PullRequest
0 голосов
/ 28 сентября 2018

Я использую GPUImage для определения края и применения GPUImageSobelEdgeDetectionFilter или GPUImageCannyEdgeDetectionFilter.Теперь мое требование:

Как взять координаты точек с этого изображения, чтобы я мог рисовать в закрытых границах.

Определение кромок из изображения

   var image_p: GPUImagePicture?
   var filterImageview: UIImageView! // to display images

   let inputImage = filterImageview.image
    if let anImage = inputImage {
        image_p = GPUImagePicture(image: anImage)
    }

    let filter1 = GPUImageSobelEdgeDetectionFilter()//GPUImageCannyEdgeDetectionFilter()
    image_p?.addTarget(filter1)
    image_p?.processImage()

    let outputImage = filter1.imageFromCurrentlyProcessedOutput()
    filterImageview.image = outputImage

Теперь я пытаюсь определить точки, чтобы я мог создать отдельный слой для рисования в закрытых границах ..

  • ДляПример 1. Изображение orgnl 2. Фильтрованное изображение sobelEdgeDetection / GPUImageCannyEdgeDetectionFilter

    1. enter image description here 2. enter image description here

    Я рисую цвет с помощью пера.Если я окрашиваю внутри круга во время окрашивания, он не должен выходить за границы круга, пока я не выберу другие точки касания.

    На основе точки касания я хочу раскрасить его в пределах закрытых границ.

Я также попробовал алгоритм Floodfill.Это дает различный вывод.Не совсем мой желаемый результат.

Как я могу применить его?

1 Ответ

0 голосов
/ 01 октября 2018

Эй, Прадип, вы ищете алгоритм floodfill , если быть точным, он решит вашу проблему.

Краткое описание алгоритма Floodfill -

TheАлгоритм заливки принимает три параметра: начальный узел, целевой цвет и замещающий цвет.Алгоритм ищет все узлы в массиве, которые связаны с начальным узлом путем целевого цвета, и изменяет их на заменяющий цвет.

Ссылки на ваши исследования и разработки, а также демонстрация в объективной-c.

  1. https://ilearnios.wordpress.com/2013/07/18/scanline-flood-fill-algorithm-with-or-without-tolerance-in-objective-c/
  2. https://lodev.org/cgtutor/floodfill.html
  3. https://github.com/Chintan-Dave/UIImageScanlineFloodfill (Отличная демонстрация предоставлена ​​Чинтан-Дейвом)

    Я также использовал в своем проекте заливку, чтобы убрать цвета фона и нашел ссылки выше очень полезными.Надеюсь, что это поможет

...