opencv图片线性混合叠加。addWeighted()函数

直接上效果图

通过滚动条选择不同的透明值,使得两张图片进行不同程度的线性混合。

主要的代码是这句:addWeighted()函数

//根据alpha和beta 的值进行线性混合addWeighted(g_srcImage1, g_dAlphaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);

源代码:

// OutputPicture.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include "pch.h"
#include <iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>//
using namespace cv;
using namespace std;#define WINDOW_NAME "线性混合实例"//为窗口标题定义的宏//-------------------全局变量声明部分---------------
//描述:全局变量声明
//------------------------------------------------------------------------
const int g_nMaxAlphaValue = 100;//Alpha 值的最大值
int g_nAlphaValueSlider;//滑动条对应的变量
double g_dAlphaValue;//alpha的值,线性混合的系数
double g_dBetaValue;//beta值,线性混合的另一个系数//声明存储图像的变量
Mat g_srcImage1;//图片资源1
Mat g_srcImage2;//图片资源2
Mat g_dstImage;//最终混合的图片//-------------------On_Tracker()函数---------------
//描述:响应滑动条的回调函数
//------------------------------------------------------------------------
void on_Tracker(int ,void*)
{//求出当前alpha值相对于最大值的比例g_dAlphaValue = (double)g_nAlphaValueSlider / g_nMaxAlphaValue;//beta值是1-alpha的值。g_dBetaValue = 1.0 - g_dAlphaValue;//根据alpha和beta 的值进行线性混合addWeighted(g_srcImage1, g_dAlphaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);//显示效果图imshow(WINDOW_NAME, g_dstImage);
}int main()
{//加载图片(两图片尺寸相同)g_srcImage1 = imread("cat15(1).jpg");//这里路径是项目相同文件下,这里是图片名称g_srcImage2 = imread("cat24(1).jpg");//设置滑动条初值为70g_nAlphaValueSlider = 70;//创建窗体cvNamedWindow(WINDOW_NAME,1);//在创建的窗体中创建一个滑动条控件char TrackbarName[50];sprintf(TrackbarName, "透明值%d", g_nMaxAlphaValue);createTrackbar(TrackbarName, WINDOW_NAME, &g_nAlphaValueSlider, g_nMaxAlphaValue, on_Tracker);//结果在回调函数中显示on_Tracker(g_nAlphaValueSlider, 0);//按任意键退出waitKey(0);return 0;
}

opencv图片线性混合可调相关推荐

  1. OpenCV之线性混合操作

    OpenCV书中线性混合操作 个人理解 图像混合就是将两个尺寸一样的图像按照一定的比例混合到一起,比如我们配置颜料,我们也是按照一定的比例去配置,所有的比例之和为1. 代码 #include < ...

  2. [opencv] 图像线性混合

    srcimage1,srcimage2,dstimage:pIplImage; srcimage1:=cvLoadImage('C:\Users\Fscut\Documents\RAD Studio\ ...

  3. C/C++ OpenCV图像的线性混合

    线性混合操作是一种电信的二元(两个输入)的像素操作, 理论公式:h(x)=(1-a)*f(x)+a*g(x) (0<=a<=1) 通过在范围0到1之间改变a的值,来对两幅图像(f(x)和g ...

  4. 【opencv4】opencv视频教程 C++ 6、图像混合、线性混合、混合权重相加addWeighted()、混合加add()、混合乘multiply()

    上一讲:[opencv4]opencv视频教程 C++ 5.读写图像imread.imwrite.读写像素at<>().修改像素值.ROI区域选择(图像裁剪)Rect.Vec3b与Vec3 ...

  5. OpenCV(C++)图像处理基础04:图像混合(线性混合操作)

    文章目录 1.知识点:线性混合数学模型 2.代码实现+测试结果 参考文献 学习了这些图像处理技巧,可以为深度学习目标检测数据集采取一些数据增强的方法或其他优化方法. 1.知识点:线性混合数学模型 进一 ...

  6. 【OpenCV】OpenCV函数精讲之 -- addWeighted()函数(线性混合)

    addWeighted()函数用来计算两个数组(图像阵列)的加权和. 格式如下: void addWeighted(InputArray src1, double alpha, InputArray ...

  7. OpenCV3编程入门(毛星云)之用滚动条控制两图片的混合

    OpenCV3编程入门书本上的示例,copy下来学习学习~~代码如下: 美女1 美女2 #include <opencv2/opencv.hpp> using namespace cv; ...

  8. OpenCV添加(混合)两个图像

    OpenCV添加混合两个图像 OpenCV添加混合两个图像 目标 理论 源代码 解释 结果 OpenCV添加混合两个图像 目标 在本教程中,您将学习: 什么是线性混合以及为什么有用? 如何使用addW ...

  9. python pyqt5图片(QPixmap)和opencv图片数据结构相互转换

    python pyqt5图片(QPixmap)和opencv图片数据结构相互转换 在python中使用pyqt5和opencv混合编程时,有时需要两种图片数据结构的相互转换.网上比较多的是把openc ...

最新文章

  1. 祭奠IT男孩大学的生活
  2. android studio 执行不了,请问,Android studio程序不报错,但是一运行就stop是什原因...
  3. 如果有一天,我老无所依,请把我丢在迪拜捡垃圾……
  4. 每天定时查询CSDN博客访问量,并通过echarts进行展示
  5. jqury关于cooke的操作写入cookie后只显示一次的DIV提示框代码
  6. 节约内存编程方式操作系统(全概念)
  7. MFC控件——ListCtrl控件[翻译](续)
  8. mysql高可用架构 - MHA简介-01
  9. C#反射技术的简单操作(读取和设置类的属性)
  10. pooling 与 步长大于1的卷积
  11. log添加 oracle redo_Oracle更改redo log大小 or 增加redo log组
  12. sentinel卫星_关于“哨兵6号”迈克尔弗里利希卫星的五条信息
  13. 港澳台、内地身份证号校验规则
  14. 区块链行业人才市场大盘点(附求职指南)
  15. 【FFmpeg视频播放器开发】解封装解码流程、常用API和结构体简介(一)
  16. 定位iowait问题
  17. 视频理解领域小样本学习调研报告
  18. 微信小程序----学生信息注册篇
  19. (一)android 桌面悬浮窗 录屏源码放送
  20. FPGA项目承接|FPGA项目外包|FPGA项目研发

热门文章

  1. 手机屏幕适配遇到虚拟键的问题
  2. android控件---自定义带文本的ImageButton
  3. hdu 2680 Choose the best route
  4. 触发器deleted 表和 inserted 表详解(转)
  5. 存在于实数域的微观粒子7-神经网络与电磁场
  6. 腐蚀rust研究台抽奖_超级石化推荐:中石化青岛安工院专家分享延迟焦化装置的腐蚀风险分析!...
  7. cpout引脚是干什么的_电源IC欠压保护(Brown-out)功能介绍
  8. 【Leetcode | easy】回文数
  9. 卷积神经网络图像卷积池化尺寸计算器
  10. 3.1 调试处理-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授