前言
本文将介绍使用OpenCV之图像融合
理论
线性混合操作
g(x)=(1−α)f0(x) + αf1(x)
,
其中α
取值范围0~1
之间,f0(x)表示一张图像x位置像素点的颜色数据,f1(x)表示另一张图像x位置像素点的颜色数据
核心思路
1、判断两张图片大小是否一致
2、UIImage转换
3、判断类型是否一致
4、图片叠加处理addWeighted(src, alpha, src2, 1.0-alpha, 0.0, dst)
5、转换为UIImage
代码演示
/* 图片混合,前提条件两张图片必须大小和类型均一致 */ - (UIImage*)kj_opencvBlendImage:(UIImage*)image alpha:(double)alpha{ if (!CGSizeEqualToSize(self.size, image.size)) { image = [image kj_BitmapChangeImageSize:self.size]; } cv::Mat src,src2,dst; UIImageToMat(self,src,true); UIImageToMat(image,src2,true); if (src.type() != src2.type()) { return self; } addWeighted(src, alpha, src2, 1.0-alpha, 0.0, dst); return kMatToUIImage(dst); }
示例图
系列文章关联
接下来我会慢慢补充Opencv的相关文章,暂时已将常见的图片处理和图片算法封装出来,有需要的朋友可以去pod 'OpencvQueen'