如何在ios swift中使用sobel边缘检测/canny边缘检测在有限的边缘边界内使用钢笔工具为草图着色?

如何在ios swift中使用sobel边缘检测/canny边缘检测在有限的边缘边界内使用钢笔工具为草图着色?,ios,swift4,gpuimage,Ios,Swift4,Gpuimage,我正在使用GPUImage检测边缘,并应用GPUImageSobelEdgeDetectionFilter或gpuimagescannyedgedetectionfilter。现在我的要求是: 如何从该图像获取坐标点,以便在闭合边界内绘制图形 从图像中检测边缘 现在我正在尝试检测这些点,以便在闭合边界内创建一个单独的图层进行绘制 例1。原图2。过滤sobelEdgeDetection/GPuimageCannydgeDetection过滤图像 二, 我用钢笔工具画颜色。 如果我在着色时在圆圈内

我正在使用
GPUImage
检测边缘,并应用GPUImageSobelEdgeDetectionFilter或gpuimagescannyedgedetectionfilter。现在我的要求是:

如何从该图像获取坐标点,以便在闭合边界内绘制图形

从图像中检测边缘

现在我正在尝试检测这些点,以便在闭合边界内创建一个单独的图层进行绘制

  • 例1。原图2。过滤sobelEdgeDetection/GPuimageCannydgeDetection过滤图像

  • 二, 我用钢笔工具画颜色。 如果我在着色时在圆圈内着色,则在我选择另一个接触点之前,它不应超出圆圈边界

    基于接触点,我想在闭合边界内对其着色

我也尝试过洪水填充算法。它给出不同的输出。不完全是我想要的输出


我如何应用它

嘿,普拉迪普,你正在寻找的洪水填充算法准确地说,它将解决你的问题

洪水填充算法简要说明-

整体填充算法采用三个参数:开始节点、目标颜色和替换颜色。该算法查找阵列中通过目标颜色路径连接到起始节点的所有节点,并将其更改为替换颜色

为您的研发提供链接,并在OBJECTIVE-c中提供演示。

  • (非常感谢 金丹(戴夫)

    我也在我的项目中使用了泛光填充,只是为了去除背景色,发现上面的链接非常完整。 希望能有帮助


  • 我以前已经试过这个了。。它一次用选定的颜色自动填充整个边界区域,但我的要求不同,我想用钢笔或铅笔画颜色,一旦我尝试在边界区域之外画任何颜色都不应该画。@PRADIPKUMAR好的,我想我明白了,问题是我现在可以想到一个选项。1.如果可以将该图像转换为bezierpath,则可以检查该点是否在路径内,并相应地绘制。
       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