我正在使用Git存储库中的GPUImage将一些过滤器应用于图像。我注意到边缘检测滤镜(我专门使用CannyEdgeDetectionFilter)在黑色背景上绘制白色边缘。任何人都知道如何在白色背景上制作黑色边缘 - 或者是另一个能够做到这一点的过滤器(并且不是重量级的,因为那是我从该库中需要的唯一过滤器)。
由于 贝。
答案 0 :(得分:0)
GPUImageColorInvertFilter适用于GPUImage,可以满足您的需求。
答案 1 :(得分:0)
正如加勒特建议的那样,您可以简单地反转该过滤器的颜色以获得您想要的结果。但是,这将在链中引入另一个过滤器,并可能减慢速度。
您可以使用GPUImageSketchFilter获得Sobel边缘检测滤波器的反转。两个滤镜之间的唯一区别是片段着色器的倒数第二行,返回的颜色为1.0减去边缘强度,而不仅仅是边缘强度。
对于Canny边缘检测,这里可以做同样的事情,只需要将GPUImageWeakPixelInclusionFilter替换为其着色器中最后一行具有以下内容的GPUI:
gl_FragColor = vec4(vec3(1.0 - sumTest * pixelTest), 1.0);
您可以复制并粘贴此过滤器的所有其余代码,以及Canny边缘检测过滤器的所有代码,然后只需更改Canny过滤器以使用您的自定义过滤器类而不是GPUImageWeakPixelInclusionFilter并为您提供自定义Canny边缘检测器您自己的名字。
关于使用Canny边缘检测滤波器的一个警告:它执行整个四步Canny过程,因此它比Sobel边缘检测滤波器使用更多内存慢得多。使用其中一个阈值边缘检测滤波器,您可以以更低的成本获得Canny结果的合理近似值。