【问题标题】:Superimposing two image in IOS在IOS中叠加两个图像
【发布时间】: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/…

标签: ios quartz-2d


【解决方案1】:

如果它总是一个矩形区域,那么你可以部分绘制:

  • 将图像划分为具有您想要的各种 alpha 值的矩形,然后绘制它们。
    • 例如。如果你想要一个大小为 (200, 200) 且 alpha=0.8 的矩形 (100, 100) 其余为 alpha=0.2,width=height=400
- draw rect, top rect:    (  0,   0) size (400, 100)
- draw rect to the left:  (  0, 100) to   (100, 200)
- draw rect to the right: (300, 100) to   (100, 200)
- draw rect, bottom:      (  0, 300) to   (400, 100)
 ------------
 | top      |
 |          |
 |----------|
 |  | M |   |
 |L |   | R |
 |  |   |   |
 |----------|
 |  bottom  |
 |----------|

单独绘制所有部分,您现在可以单独控制它们的alpha。 M 这里是你的“主要”部分。

对于非矩形的,您可能需要构建一个蒙版并使用它来创建图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2018-03-07
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多