C++ 中怎么利用OpenCV实现线性混合操作


本篇文章为大家展示了C++ 中怎么利用OpenCV实现线性混合操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。线性混合操作即可以把两张图像混合成一张图像的操作.图像线性混合的数学原理G(x)=(1-a)F(x)+aQ(x)注意事项:1,a的取值范围为0到1之间2,F(x)和Q(x)为参与混合的两幅图像,G(x)表示输出图像3,通过对两幅图像的每个像素值做线性加权得到最终的输出图像4,两幅图像的大小和类型必须完全一致,如果把图像当成一个矩阵则两个矩阵相加的前提是维度必须一致,否则没有相加的意义。addWeighted函数在OpenCV中用于线性混合操作的API为addWeighted函数第一个参数,InputArray类型的src1,表示需要加权的第一个数组,常常填一个Mat。第二个参数,alpha,表示第一个数组的权重第三个参数,src2,表示第二个数组,它需要和第一个数组拥有相同的尺寸和通道数。第四个参数,beta,表示第二个数组的权重值。第五个参数,dst,输出的数组,它和输入的两个数组拥有相同的尺寸和通道数。第六个参数,gamma,一个加到权重总和上的标量值。看下面的式子自然会理解。第七个参数,dtype,输出阵列的可选深度,有默认值-1。;当两个输入数组具有相同的深度时,这个参数设置为-1(默认值),即等同于src1.depth()。代码演示新建项目
新建一个项目opencv-0006,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.加载图片
然后我们加载图像用于显示出来,我们这次需要两个数据源,所以加载了两张图像然后我们显示一下看看效果OK,显示图片没有问题。addWeighted线性混合操作我们在操作addWeighted的时候,两个数据源必须是相同大小的图像,所以我在们操作之前先输出一个下看看两个图像的高度和宽度是否一致.运行后发现两个图像的宽度差了一个,那在执行addweighted的时候肯定会报错了.所以我们要加一行调整的代码,如果判断宽度和高度有一个不一致,那就把第二个图像按第一个图像的大小进行缩放图像缩放的API为resizeCV_EXPORTS_Wvoidresize(InputArraysrc,OutputArraydst,Sizedsize,doublefx=0,doublefy=0,intinterpolation=INTER_LINEAR);
接下来我们加入缩放的判断,把src2的图像转换成src1的大小这样我们就可以进行线性混合操作了其中定义的alpha就是两个图像的权重,我们用了0.5比重,第二个图像就要用到1-0.5效果了,就是说两个比重加起来要等于1.我们看一下显示效果中间的图像就是我们通过线性混合操作生成的图片,接下来我们改一下权重,看看显示的效果.将第一个图像的权 香港云主机重改为0.2,显示的效果为明显可以看出第二张图显示的比较清晰.我们再把第一个图的权重改为0.7上述内容就是C++ 中怎么利用OpenCV实现线性混合操作,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注开发云行业资讯频道。

相关推荐: win10怎么创建pin码登录加强电脑安全

这篇文章主要介绍了win10怎么创建pin码登录加强电脑安全的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win10怎么创建pin码登录加强电脑安全文章都会有所收获,下面我们一起来看看吧。创建方法:1、首先按win+i打开设置界面…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/31 16:19
Next 07/31 16:19

相关推荐