首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义CIKernel移动像素

自定义CIKernel移动像素
EN

Stack Overflow用户
提问于 2013-04-29 16:10:59
回答 1查看 873关注 0票数 2

我正在尝试创建自定义的cifilter (就像adobe的warp filter)。如何在内核语言中只将几个像素(在ROI中)移动到其他位置?也许有人可以向我推荐一些相关信息?我已经阅读了所有关于创建自定义cifilter的苹果文档,但没有找到任何类似的该类型过滤器的内核部分的示例。有一些CIFilters可以做类似的事情(比如CITwirlDistortion、CIBumpDistortion)。也许有什么地方我可以找到他们的内核?

EN

回答 1

Stack Overflow用户

发布于 2013-05-04 18:51:56

你必须反其道而行之。而不是说我想把这些输入像素放在输出中的这个位置,你必须回答这个问题,这个输出像素的输入像素在哪里。

看看这个内核:

代码语言:javascript
复制
kernel vec4 coreImageKernel(sampler image, float minX, float maxX, float shift)
{
    vec2 coord = samplerCoord( image );

    float x = coord.x;
    float inRange = compare( minX - x, compare( x - maxX, 1., 0. ), 0. );
    coord.x = coord.x + inRange * shift;
    return sample( image, coord );
}

它将minX和maxX之间的垂直条纹替换为图像的内容,即向右移位像素。将此内核与minX = 100、maxX = 300和shift = 500一起使用时,将在左下角显示图像。原件在右上角。

因此,效果是将范围(minX + shift,maxX + shift)中的像素移动到(minX,maxX)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16273956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档