iOS-OpenCV图像混合

  • OpenCV处理图像混合主要是根据线性混合函数,通过在0到1范围内改变α的值,使两幅图像或者视频产生在时间上的画面叠化得效果。实际上α和β的和不一定为1,只是为了防止图像出现过饱和的现象。


    线性公式.png
  • 在以上公式中,f1(x)和f2(x)分别代表两张图片的矩阵,α和β表示两张图片的权重。这里要注意一点就是因为我们要对两张图片求和,所以它们必须是相同的尺寸和类型

  • 通过函数addWeighted可以方便地实现生成最终图像g(x)的功能,如下
    addWeighted(pictureMatA,alpha,pictureMatB,beta,0.0,resultMat);
    该函数进行了如下的计算,result = alphapictureMatA + betapictureMatB + gama,在以上公式中,gama为0.0,该参数主要起到了一个微调的作用。

code:

- (void)viewDidLoad {
    [super viewDidLoad];
    CGRect rect = [UIScreen mainScreen].bounds;
    self.imgView.frame = rect;
    
    UIImage *image1 = [UIImage imageNamed:@"dog.jpg"];
    UIImageToMat(image1, PictureMatA);
    
    UIImage *image2 = [UIImage imageNamed:@"dog2.png"];
    UIImageToMat(image2, PictureMatB);
    
    double t = (double)getTickCount();
    blending(PictureMatA, PictureMatB, resultPictureMat);
    
    t = ((double)getTickCount() - t)/getTickFrequency();
    cout<< "--------------cost:" << t <<" seconds-----------------" <
iOS-OpenCV图像混合_第1张图片
dog+dog2.png

你可能感兴趣的:(iOS-OpenCV图像混合)