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

2023-12-10

我在用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算法。它给出了不同的输出。不完全是我想要的输出。

我该如何应用它?


嘿,普拉迪普,你正在寻找洪水填埋准确地说,它会解决你的问题。

Floodfill 算法简要说明 -

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

您的研发链接以及 Objective-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(很棒的演示由 金坦-戴夫)

    我还在我的项目中使用了洪水填充,只是为了删除背景颜色,并发现上面的链接非常有用。 希望能帮助到你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐