博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
opencv图像线性混合&imread()
阅读量:4326 次
发布时间:2019-06-06

本文共 1535 字,大约阅读时间需要 5 分钟。

一、图像线性混合

线性混合就是,对两幅图像(f0(x)和f1(x))或两段视频(同样为(f0(x)和f1(x))产生时间上的画面叠化(cross-dissolve)效果,就像幻灯片放映和电影制作中的那样。函数表示为:

1、opencv函数-addWeighted函数

void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);  //第一个参数,InputArray类型的src1,表示需要加权的第一个数组,常常填一个Mat。//第二个参数,alpha,表示第一个数组的权重//第三个参数,src2,表示第二个数组,它需要和第一个数组拥有相同的尺寸和通道数。//第四个参数,beta,表示第二个数组的权重值。//第五个参数,dst,输出的数组,它和输入的两个数组拥有相同的尺寸和通道数。//第六个参数,gamma,一个加到权重总和上的标量值。看下面的式子自然会理解。//第七个参数,dtype,输出阵列的可选深度,有默认值-1。;当两个输入数组具有相同的深度时,个参数设置为-1(默认值),即等同于src1.depth()。dst = src1

addWeighted函数计算如下两个数组(src1和src2)的加权和,得到结果输出给第四个参数。即addWeighted函数的作用可以被表示为为如下的矩阵表达式为: dst = src1[I]*alpha+ src2[I]*beta + gamma;

2、实例代码

#include 
#include
//隐藏控制台窗口 //#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")using namespace std;using namespace cv;int main(){ Mat src1, src2, dst;//创建Mat数组,等待存储图片 src1 = imread("1.jpg"); src2 = imread("2.jpg"); //图2尺寸缩放到与图1相同 resize(src2, src2, src1.size()); //将图1与图2线性混合 addWeighted(src1, 0.5, src2, 0.5, 0, dst); //显示图片 imshow("src1图", src1); imshow("src2图", src2); imshow("混合后的图片", dst); waitKey(0);//等待按键响应后退出,0改为5000就是5秒后自动退出。 destroyAllWindows(); return 0;}

 

二、imread(const string& filename, int flags=1)

函数的第二个参数可设置读入图像的方式,函数默认以RGB三波段形式读入图像,即flags=1,而需读入一幅灰度图则需要设置flags=0,以8bit单通道的形式读入。

flag=-1时,8位深度,原通道

flag=0时,8位深度,1通道

flag=1时,8位深度,3通道

flag=2时,原深度,1通道

flag=3时,原深度,3通道

转载于:https://www.cnblogs.com/ww1x/p/10882005.html

你可能感兴趣的文章
HTTP协议
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
Ubuntu菜鸟入门(五)—— 一些编程相关工具
查看>>
valgrind检测linux程序内存泄露
查看>>
Hadoop以及组件介绍
查看>>
1020 Tree Traversals (25)(25 point(s))
查看>>
第一次作业
查看>>
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>