Ios 如何使用CIFilter作为链接下的图像创建失真效果
我正在寻找添加到我的应用程序(实时过滤录像机应用程序)使用核心图像过滤器的效果。这种效果需要显示失真线,就像旧的录像机一样。我试着加载图像帧并将其作为覆盖应用到过滤器图像的输出,但这会在录制过程中造成延迟。所以我现在不想通过CIFILTERS产生这种效果Ios 如何使用CIFilter作为链接下的图像创建失真效果,ios,objective-c,iphone,core-image,cifilter,Ios,Objective C,Iphone,Core Image,Cifilter,我正在寻找添加到我的应用程序(实时过滤录像机应用程序)使用核心图像过滤器的效果。这种效果需要显示失真线,就像旧的录像机一样。我试着加载图像帧并将其作为覆盖应用到过滤器图像的输出,但这会在录制过程中造成延迟。所以我现在不想通过CIFILTERS产生这种效果 谢谢。这看起来像是定制内核的作业 您可以使用CIRandomGenerator生成随机噪声场,然后使用一些自定义核心图像内核语言,使用sin控制间距,在原始图像的条纹上合成随机噪声场。通过平滑步骤传递垂直位置的正弦会产生很好的效果 您的内核应
谢谢。这看起来像是定制内核的作业 您可以使用
CIRandomGenerator
生成随机噪声场,然后使用一些自定义核心图像内核语言,使用sin
控制间距,在原始图像的条纹上合成随机噪声场。通过平滑步骤
传递垂直位置的正弦会产生很好的效果
您的内核应该如下所示:
let kernel = CIColorKernel(string:
"kernel vec4 vhsNoise(__sample image, __sample noise, float time, float spacing, float stripeHeight, float backgroundNoise)" +
"{" +
" vec2 uv = destCoord();" +
" float stripe = smoothstep(1.0 - stripeHeight, 1.0, sin((time + uv.y) / spacing)); " +
" return image + (noise * noise * stripe) + (noise * backgroundNoise);" +
"}"
)!
实际上,我已经编写了一个CIFilter
来实现这一点
Simon这看起来像是定制内核的作业 您可以使用
CIRandomGenerator
生成随机噪声场,然后使用一些自定义核心图像内核语言,使用sin
控制间距,在原始图像的条纹上合成随机噪声场。通过平滑步骤
传递垂直位置的正弦会产生很好的效果
您的内核应该如下所示:
let kernel = CIColorKernel(string:
"kernel vec4 vhsNoise(__sample image, __sample noise, float time, float spacing, float stripeHeight, float backgroundNoise)" +
"{" +
" vec2 uv = destCoord();" +
" float stripe = smoothstep(1.0 - stripeHeight, 1.0, sin((time + uv.y) / spacing)); " +
" return image + (noise * noise * stripe) + (noise * backgroundNoise);" +
"}"
)!
实际上,我已经编写了一个CIFilter
来实现这一点
Simon上面的代码应该使用destCoord()而不是samplerCoord(图像)。samplerCoord()函数接受的是“sampler”而不是“__sample”。事实上,我犯了一个小学生错误。这一点现在已经改变了,尽管它确实与
samplerCoord
一起工作。上面的代码应该使用destCoord()而不是samplerCoord(图像)。samplerCoord()函数接受的是“sampler”而不是“__sample”。事实上,我犯了一个小学生错误。这一点现在已经改变了,尽管它确实与samplerCoord
一起工作。