一、线性融合操作

线性混合操作 也是一种典型的二元(两个输入)的 像素操作 :

通过在范围  内改变  ,这个操可以用来对两幅图像或两段视频产生时间上的 画面叠化 (cross-dissolve)效果,就像在幻灯片放映和电影制作中那样

二、操作实践

#include <QCoreApplication>
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgcodecs.hpp>
#include <QDebug>
#include <QDir>
#include <QFile>
#include "iostream"using namespace std;
using namespace cv;int main()
{double alpha = 0.5; double beta;Mat src1, src2, dst;//! 读取图片src1 = imread("C:/2.png");src2 = imread("C:/3.png");if( !src1.data ) { qDebug("Error loading src1 \n"); return -1; }if( !src2.data ) { qDebug("Error loading src2 \n"); return -1; }//! 调整两幅图片保持一致,否则会出错resize(src2, src2, Size(src1.cols, src1.rows));beta = ( 1.0 - alpha );addWeighted( src1, alpha, src2, beta, 0.0, dst);imshow( "Linear Blend", dst );waitKey(0);return 0;
}

 

src1                                src2                                 dst

参考资料:

  • 使用OpenCV对两幅图像求和(求混合(blending))

附录1: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()。

OpenCV学习笔记之图像融合相关推荐

  1. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  2. OpenCV学习笔记(九)——图像轮廓(下)

    <OpenCV轻松入门:面向Python>学习笔记(九) 1-3 查找并绘制轮廓.矩特性及Hu矩 4-5 轮廓拟合及凸包 6. 利用形状场景算法比较轮廓 6.1 计算形状场景距离 6.2 ...

  3. Opencv学习笔记(八) -- 图像色彩空间转换

    1.常见图像色彩空间 RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道 ...

  4. OpenCV学习笔记(七)——图像梯度及边缘检测

    图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.一般情况下,图像梯度计算的是图像的边缘信息. ...

  5. [OpenCV学习笔记3][图像的加载+修改+显示+保存]

    正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...

  6. OpenCV学习笔记五-图像混合

    将两张图片混合 P6 图像混合 #include<iostream> #include<opencv2/opencv.hpp>using namespace std; usin ...

  7. Opencv学习笔记四——图像形态学操作

    需要的库和自定义函数 import cv2 import numpy as np import matplotlib.pyplot as pltdef cv_show(name, mat):cv2.i ...

  8. (_cai_) opencv学习笔记(1):图像形态学计算的方式 morphology函数的应用

    1.腐蚀 概述:腐蚀掉图像的细节.若图像有很多毛刺,通过腐蚀操作,可以将毛刺消除. 下面所说的"值"可以简单理解为RGB三个通道[0,255],值越小,亮度越低,值越大,亮度越高. ...

  9. opencv学习笔记之图像尺寸、翻转与仿射变换

    文章目录 前言 一.图像尺寸变换 二.图像翻转变换 三.图像仿射变换 getRotationMatrix2D()函数用于计算旋转矩阵 getAffineTransform()函数 warpAffine ...

最新文章

  1. 怎么修改CAD编辑器中默认的线型
  2. 分享一套主流框架源码资料,征服阿里 P7 面试必备!
  3. 在Android上使用OpenCL调用GPU加速
  4. 深度学习的数学 (3)基础函数
  5. 关于几种排序算法的时间性能比较
  6. elementui vue的html随机点名器软件网页版源码1.1
  7. Java BigDecimal toString()方法与示例
  8. linux脚本取前一天时间戳,linux – 为脚本日志条目添加时间戳
  9. IPXX防护等级中关于防水实验的规定
  10. linux 两台linux服务器想共享一个磁盘分区
  11. nginx的学习笔记,第四记。
  12. 虚拟机VMware14安装教程以及搭建openEuler-20.03-LTS-x86_64-dvd.iso系统教程(网盘中也包含了Ubuntu 16.04的.ios文件)
  13. 数据结构——栈与队列的异同
  14. uniapp-小程序与H5压缩图片上传
  15. mysql ibd文件删除_误删除MySQL数据库表的ibd文件怎么办
  16. 【shell案例】学员管理系统
  17. Excel教程:Excel中最强大的快捷键你知道吗
  18. 【Unity】StreamingAssets和PersistentData文件夹
  19. .Net 优秀的开源框架整理
  20. Java GUI气泡诗词02

热门文章

  1. boost::regex模块部分正则匹配相关的测试程序
  2. boost::math::inverse_chi_squared用法的测试程序
  3. boost::hana::maybe用法的测试程序
  4. boost::function_types::components用法的测试程序
  5. GDCM:gdcm::PDFCodec的测试程序
  6. GDCM:gdcm::TableReader的测试程序
  7. boost::container_hash模块实现哈希信息
  8. ITK:将图像从一种类型投射到另一种类型,但限制在输出值范围内
  9. ITK:从二进制图像中的对象计算距离图
  10. ITK:使用写访问权迭代图像中的区域