gpt4 book ai didi

ios - GPUImage - 将 GPUImageTransformFilter 匹配到正确的混合大小

转载 作者:行者123 更新时间:2023-11-29 00:12:29 25 4
gpt4 key购买 nike

我在 iOS 上使用 GPUImage。我在使用 GPUImageTransformFilter 转换(缩放)GPUImagePicture 并将其混合到视频中时遇到问题。

overlayImage = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"Sticker"] smoothlyScaleOutput:YES];

blendFilter = [GPUImageAlphaBlendFilter new];

transformFilter = [GPUImageTransformFilter new];
// [transformFilter forceProcessingAtSize:?????];
transformFilter.affineTransform = CGAffineTransformMakeScale(0.2f, 0.2f);

[overlayImage addTarget:transformFilter];

[videoCamera addTarget:blendFilter];
[overlayImage addTarget:blendFilter];

[overlayImage processImage];
[videoCamera startCameraCapture];

我得到的错误结果是图像显示未转换 - 它仍然是完整尺寸,就好像从未应用过转换滤镜一样。

转换后的 GPUImagePicture 需要以与混合滤镜的其他内容完全相同的大小进行处理是否正确?

如果是这样,我该怎么做?我应该使用 forceProcessingAtSize 吗?我可以通过查询某些东西来获得大小吗,比如 videoCamera 的 session ?我尝试将 forceProcessingAtSize 设置为 AVCaptureSessionPreset 的大小,640x480,但这没有帮助。

谢谢

最佳答案

您还没有将上述代码中的 transformFilter 连接到任何东西,因此它被忽略了。我相信你需要更正你的代码才能阅读

[overlayImage addTarget:transformFilter];

[videoCamera addTarget:blendFilter];
[transformFilter addTarget:blendFilter];

如果您希望混合转换后的结果。

forceProcessingAtSize 在这里不会真正执行您想要的操作,因为它调整的是底层像素大小,而不是它为混合呈现的方式。混合滤镜使用第一个图像的纵横比,然后拉伸(stretch)第二个图像以适应它。这是我使用的相当简单的归一化纹理坐标的结果,不幸的是,我从未添加选项来保留第二张图像中的纵横比。

关于ios - GPUImage - 将 GPUImageTransformFilter 匹配到正确的混合大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46064322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com