我正在使用 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 图像
我正在使用钢笔工具绘制颜色。 如果我在着色时在圆圈内着色,在我选择另一个接触点之前,它不应该从圆圈边界出来..
基于触摸点,我想在封闭边界内为其着色。
我也试过Floodfill算法。它给出了不同的输出。不完全是我想要的输出。
我该如何应用它?
最佳答案
嘿 Pradip,您正在寻找 floodfill 算法,确切地说,它可以解决您的问题。
Floodfill算法简要说明-
flood-fill 算法采用三个参数:起始节点、目标颜色和替换颜色。该算法查找数组中所有通过目标颜色路径连接到起始节点的节点,并将它们更改为替换颜色。
研发链接和 objective-c 演示。
- https://ilearnios.wordpress.com/2013/07/18/scanline-flood-fill-algorithm-with-or-without-tolerance-in-objective-c/
- https://lodev.org/cgtutor/floodfill.html
https://github.com/Chintan-Dave/UIImageScanlineFloodfill (伟大的演示礼貌 Chintan-Dave)
我还在我的项目中使用了 floodfill 只是为了删除背景颜色并发现上面的链接非常有用。 希望对你有帮助
关于ios - 如何使用 ios swift 中的 sobel 边缘检测/canny 边缘检测在有限的边缘边界内使用钢笔工具为我的草图着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52553432/