赞
踩
图片的融合在日常的图片的处理中算是比较常用的功能,这节课我们一起来学习一下他的工作机制和OpenCV给我们提供的接口。
如下图片我们可以看到两长图片你中有我,我中有你的效果:
其效果我们使用线性混合来实现。
我们知道图片的颜色主是由RGB值来决定的,值的范围是0~255.
当我们要融合两张图片时,则需要按一定比例来分配色值,但是需要注意的是无论怎么分配色值范围都在0~255之间。
那么我则需要一个比例α来控制,首先是α需要在0~1之间。
假设图片A的颜色占比为α时,则另张图片B则需要占比为(1-α) 如此才能确保总和为1.
表达为公式如下(线性混合):
首先是控制对应的透明度
创建alpha和beta用于控制图片占用的比例,并使之总和为1.
float alpha = 0.5f;
float beta = (1.0f - alpha);
使用Imgcodecs方式加载两张需要进行融合的图片。
string readPath1 = Application.dataPath + "/OpenCVForUnity/Examples/Resources/timg.jpg";
string readPath2 = Application.dataPath + "/OpenCVForUnity/Examples/Resources/lena.jpg";
src1 = Imgcodecs.imread(Utils.getFilePath(readPath1), Imgcodecs.IMREAD_COLOR);
src2 = Imgcodecs.imread(Utils.getFilePath(readPath2), Imgcodecs.IMREAD_COLOR);
注意: 这里需要用到两图张图像,这两个图像的尺寸和类型都要一样.
核心语句是通过Core.addWeighted方法来进行混合
Core.addWeighted(src1, alpha, src2, beta, 0, dst);
参数1:图片源1
参数2::图片源1透明度
参数3:图片源2
参数4:图片源2透明度
参数5:加到标量的和
参数6:混合结果容器
由于Mat读取图片后储存方式为 BGR
,.因而需要转为 RGB
为了节省性能可以选择操作完所有步骤,最后需要显示的时候才转为 RGB模式
.
Imgproc.cvtColor(dst, dst, Imgproc.COLOR_BGR2RGB);
然后是创建图片装其写入
//创建图片
Texture2D textureA = new Texture2D(dst.cols(), dst.rows(), TextureFormat.RGB24, false);
//将Mat的图片写入Texture2D中
Utils.matToTexture2D(dst, textureA);
下面是项目的完整代码:
Mat src1, src2, dst; float alpha = 0.5f; float beta = (1.0f - alpha); string readPath1 = Application.dataPath + "/OpenCVForUnity/Examples/Resources/timg.jpg"; string readPath2 = Application.dataPath + "/OpenCVForUnity/Examples/Resources/lena.jpg"; src1 = Imgcodecs.imread(Utils.getFilePath(readPath1), Imgcodecs.IMREAD_COLOR); src2 = Imgcodecs.imread(Utils.getFilePath(readPath2), Imgcodecs.IMREAD_COLOR); dst = new Mat(src2.size(), Imgcodecs.IMREAD_COLOR); //混合图片 Core.addWeighted(src1, alpha, src2, beta, 0, dst); //转写色彩模式 Imgproc.cvtColor(dst, dst, Imgproc.COLOR_BGR2RGB); //创建图片 Texture2D textureA = new Texture2D(dst.cols(), dst.rows(), TextureFormat.RGB24, false); //将Mat的图片写入Texture2D中 Utils.matToTexture2D(dst, textureA); //显示出图片 objA.GetComponent<Renderer>().material.mainTexture = textureA;
这篇教程内容比较简单,大家可以耐心阅读一下,相信会有收获的
看到这了麻烦帮忙点个赞,谢谢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。