我试图使用GPU
Image框架的GPU
ImagePoissonBlendFilter来混合我的面部混合应用程序中的两个面.这是我的代码.
- (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]; }
即如你所见,我给出了两个图像(rearFace和frontFace)作为此方法的输入.图像正面是一种形状(通过连接相对的眼睛和嘴部位置形成的多边形形状),并且具有与后面图像相同的尺寸i.(为了匹配尺寸,我填充了多边形外部的空间绘图时用透明的颜色).
然而,混合不会像我预期的那样发生.即前面的锋利边缘没有适当地混入后面.在这里,我的假设是PoissonBlendFilter开始从其左上角而不是面的左上边界混合第二个图像.
问题:我觉得输入图像没有正确送入滤镜.我是否需要对输入图像应用某种掩模?任何人都可以指导我吗?