【发布时间】:2018-10-05 04:59:00
【问题描述】:
我需要用我选择的颜色覆盖在实时视频预览中检测到的边缘(就像在 Lightroom CC 应用程序中调整焦点时所做的那样)。使用 Metal 或 CoreImage 实时绘制这些线条的最简单方法是什么?我可以使用 Sobel 边缘检测来使用 Metal Performance Shader 检测边缘,但不知道如何用我选择的颜色覆盖边缘。
【问题讨论】:
-
我想你已经找到了一些东西——有几个关于使用 Sobel 并以你选择的颜色输出的例子......如果你在那里遇到问题,你能提供细节吗?如果问题是性能,你能提供细节吗?你现在正在做什么?你在做什么有什么问题?
-
您能否指出他们使用 Sobel 并输出颜色的示例?我不知道如何使用 Metal 或 CoreImage 或 OpenGLES 来做到这一点。
-
基本思想可能是用Sobel核对图像进行卷积,并使用阈值输出颜色。然而,这只是一个想法,我想可能会有更好和更精确的实现。唯一的问题是我无法在互联网上搜索它,可能是缺少合适的关键字!
-
我明白了。这里有三个链接可以帮助您进行卷积和 Sobel。 (1) THE 资源就我而言 - github.com/FlexMonkey/Filterpedia 小心,它是 Swift 2。如果你想要更深入的解释,请查看他的书 CoreImage for Swift。 (2) 我使用的 Swift 3 分支(除了我轻松升级到 Swift 4 的 Metal 过滤器之外的所有)github.com/Norod/Filterpedia 这两个都将一个数组传递给
CIConvolution5X5。如果您知道如何编写自己的内核,这里有一个 3x3 矩阵供您使用 coding-experiments.blogspot.com.au/2010/07/convolution.html
标签: ios core-image metal edge-detection