【发布时间】:2014-01-04 07:12:13
【问题描述】:
我正在创建一个有趣的项目。
在我的项目中,我正在做的是将人脸叠加到对象上,比如我在背景上有人脸图像,我需要将对象(Apple)叠加在人脸图像上,但它不应该完全重叠,而是眼睛、嘴巴特征应该在对象中可见,例如 url 中的图像
到目前为止我所做的 - 使用 AVFoundation 我正在逐帧检测面部。
接下来我需要叠加两个图像。人脸图像和对象,但我需要减少人脸对象的 alpha 分量,使其看起来像苹果说话。
有人可以指导我或为我提供示例代码,以便我可以实现相同的叠加。
编辑1:
以下是我用来混合两个图像的代码。
UIImage *bottomImage =[UIImage imageNamed:@"face.jpg"];
UIImage *image = imageview.image;
CGSize newSize = CGSizeMake(imageview.frame.size.width, imageview.frame.size.height);
UIGraphicsBeginImageContext( newSize );
// Use existing opacity as is
[bottomImage drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];
// Apply supplied opacity
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.8];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
imageview.image=newImage;
UIGraphicsEndImageContext();
在上面的代码中,我叠加了两个图像,减少了图像 alpha ,但我不需要这个。我想减少特定部分,比如我有三个图像,左眼,右眼和嘴巴,在对象(苹果)中,我只需要减少对象的这三个图像部分而不是整个图像的 alpha。
【问题讨论】:
-
你能在你已经尝试过的地方显示代码吗?
-
我已经更新了代码。但我需要用对象的特定位置而不是整个对象来减少 alpha。
-
所以你想让面部图像中的所有区域都具有零 alpha 并且眼睛和嘴巴具有更高的值?您需要先检测嘴巴和眼睛区域。使用外部库或者自己实现某种特征检测。这是你需要的吗?
-
我已经检测到人脸特征,现在我需要根据特征区域改变物体(苹果)的alpha。你能告诉我如何根据面积减少物体的alpha吗?
-
听起来您需要解决图像遮罩问题。有很多方法可以实现这一点......一般方法:jeroendeleeuw.com/post/33638733049/… - 广泛的解释:developer.apple.com/library/mac/documentation/graphicsimaging/…