gpt4 book ai didi

ios - 使用 GPUImagePoissonBlendFilter 进行混合

转载 作者:可可西里 更新时间:2023-11-01 03:21:24 26 4
gpt4 key购买 nike

我正在尝试使用 GPUImage 框架的 GPUImagePoissonBlendFilter 在我的脸部混合应用程序中混合两个脸部。这是我的代码。

- (void)applyPoissonBlendToImage:(UIImage *) rearFace withImage:(UIImage *) frontFace 
{
GPUImagePicture* picture1 = [[GPUImagePicture alloc] initWithImage:rearFace];
GPUImagePicture* picture2 = [[GPUImagePicture alloc] initWithImage:frontFace];

GPUImagePoissonBlendFilter * poissonFilter = [[GPUImagePoissonBlendFilter alloc] init];
poissonFilter.mix = .7;
poissonFilter.numIterations = 200;

[picture1 addTarget:poissonFilter];
[picture1 processImage];

[picture2 addTarget:poissonFilter];
[picture2 processImage];

finalResultImage = [poissonFilter imageFromCurrentlyProcessedOutputWithOrientation:rearFace.imageOrientation];
}

即如您所见,我提供了两张图像(背面和正面)作为此方法的输入。图像正面是一个形状(通过连接相对的眼睛和嘴巴位置形成的多边形形状)并且与背面图像大小相同,即(为了匹配大小,我已经填充了多边形形状外部的空间绘制时使用透明颜色)。

但是混合并没有像我预期的那样发生。即正面的锋利边缘没有正确地融入背面。这里我的假设是 PoissonBlendFilter 从左上角开始混合第二张图像,而不是从脸部的左上边界开始混合。

问题:感觉输入图像没有正确送入过滤器。我需要对输入图像应用某种掩蔽吗?任何人都可以指导我吗?

最佳答案

GPUImage 有时会因双输入滤波器而变得棘手。当您将混合过滤器添加到第一个源图像时,明确指定纹理位置。所以不是:

[picture1 addTarget:poissonFilter];

试试这个:

[picture1 addTarget:poissonFilter atTextureLocation:0];

其余的(picture1 或任何其他)不需要这个,但是两个输入过滤器有一个小错误,有时需要明确指定纹理位置。

关于ios - 使用 GPUImagePoissonBlendFilter 进行混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17922327/

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