• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - GPUImage:如何将不同的过滤器应用于图像,缩小它们并将结果平铺到输出图像

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:58:16 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我是 GPUImage 的新手图书馆。

我正在使用它从相机中获取帧并实时过滤它们。我正在为我正在开发的过滤器使用不同的过滤器参数。

我想出了如何使用不同的过滤器并行过滤相机图像,但我现在想做的是输出一个结果图像,其中 4 个过滤后的图像平铺在一起以形成一个大的输出图像。

我的想法是我可以链接 GPUImageTransformFilter 实例和 GPUImageAddBlendFilter 实例来获得合成图像。例如,在缩小两个图像并将它们并排放置的最简单情况下:

self.transform1 = [[GPUImageTransformFilter alloc] init];
_transform1.affineTransform = CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5);

self.transform2 = [[GPUImageTransformFilter alloc] init];
_transform2.affineTransform = CGAffineTransformTranslate(CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5), 1.0, 0.0);

self.blendFirst1 = [[GPUImageAddBlendFilter alloc] init];

[_transform1 addTarget:_blendFirst1];
[_transform2 addTarget:_blendFirst1];

然而,这会导致两个图像被缩放并相互重叠,结果被转换为图像的边缘而另一半为空。

如果有任何关于如何缩放和平铺较小图像以制作大图像的指示,我将不胜感激。

非常感谢!



Best Answer-推荐答案


虽然您可以使用变换来做到这一点,但您正在查看三个混合以将您的四张图像整合到一个静止帧中。这不会是完成这项工作的最快或最节省内存的途径。

相反,我建议继承 GPUImageTwoInputFilter 或基于此创建一个全新的多输入过滤器,然后使用该过滤器将所有四个图像拉入以进行渲染。人们已经通过这样做进行了三或四过滤器输入混合,这可能是您最有效的路径。

过滤器的片段着色器可以渲染四个四边形,每个输入图像一个,或者具有选择性地从四个纹理中采样的着色器以在给定像素处提供适当的颜色。前者会更快,但可能需要您编写更多的 OpenGL ES 代码来修改基本混合过滤器。后者将对顶点和片段着色器进行简单的调整,但这些着色器中的条件可能会减慢速度。

关于ios - GPUImage:如何将不同的过滤器应用于图像,缩小它们并将结果平铺到输出图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893905/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap