转载请注明出处。。!

http://blog.csdn.net/zhonghuan1992





OpenCV两张图片的合并






原理:

两张图片合并,想想图片是用一个个像素点来存储。每一个像素点有他的值。

那么合并,无非就是像素点值得合并,使用的公式能够就是给两张图片分别一个权值。然后求和。向以下这个公式:

的值位于0至1之间

OpenCV实现:

那么我们在openCV内怎么实现呢?在openCV中,有一个addWeighted函数。函数详细调用能够看

highlight=addweighted#addweighted">这里

读取完两个要合并的图片后。(注意。这里合并的图片必须是同样的size和type,就是说图片长宽像素数一样。color存储方式要一样。我选的是388*388的png图片

/// Read image ( same size, same type )
src1= imread("zh.png");
src2= imread("zh2.png");

调用addWeighted函数。

beta = ( 1.0 - alpha );
addWeighted( src1, alpha, src2, beta, 0.0,dst);

这里src1和src2都是读取之后的矩阵,alpha和beta是他们的权重。

事实上addWeighted的过程是以下的公式:

这里的Y是0.0。

好,让我们动手来做这个操作。代码例如以下:

#include <cv.h>
#include <opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include <highgui.h>
#include <iostream> using namespace cv; int main()
{
double alpha = 0.5; double beta; double input; Mat src1, src2, dst; /// Ask the user enter alpha
std::cout << " Simple Linear Blender " << std::endl;
std::cout << "-----------------------" << std::endl;
std::cout << "* Enter alpha [0-1]: ";
std::cin >> input; /// We use the alpha provided by the user if it is between 0 and 1
if (input >= 0.0 && input <= 1.0)
{
alpha = input;
} /// Read image ( same size, same type ),注意,这里一定要同样大小。同样类型,否则出错
src1 = imread("zh.png");
src2 = imread("zh2.png"); if (!src1.data) { printf("Error loading src1 \n"); return -1; }
if (!src2.data) { printf("Error loading src2 \n"); return -1; } /// Create Windows
namedWindow("Linear Blend", 1); beta = (1.0 - alpha);
addWeighted(src1, alpha, src2, beta, 0.0, dst); //这里调用了addWeighted函数,得到的结果存储在dst中 imshow("Linear Blend",dst); waitKey();
return 0;
}

结果:

图片1:

图片2:

合并后的图片:

OpenCV两张图片的合并的更多相关文章

  1. opencv::两张图片的线性融合

    理论-线性混合操作 g(x) 表示 融合图片中的像素点,f0(x) 和 f1(x) 分别表示背景和前景图片中的像素点. //参数1:输入图像Mat – src1 //参数2:输入图像src1的alph ...

  2. java实现把两张图片合并(Graphics2D)

    package com.yin.text; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.i ...

  3. OpenCV入门:(四:混合两张图片)

    1. 原理 对两张图片使用如下公式可以得到两张图片的混合图片, 其中f0(x),f1(x)分别是图片1和图片2同一位置的像素点. 2. OpenCV中的AddWeight函数 函数和参数说明: ) s ...

  4. opencv_判断两张图片是否相同

    QQ:231469242 pip install opencv 如果找不到版本,去非官方下载opencv第三方包http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下 ...

  5. iOS把两张图片合成一张图片

    0x00 步骤 先读取两张图片把创建出CGImageRef 创建上下文画布 把图片依次画在画布指定位置上 从上下文中获得合并后的图片 关闭上下文 释放内存 0x01 代码实现 - (void)comp ...

  6. 图像处理:AlphaBlend混合两张图片

    使用vs2017新建一个项目 混合A,B两张图的基础算法: outColor = srcColor * srcAlpha + destColor * (1 - srcAlpha) 输出颜色 = 源颜色 ...

  7. linux 两个文件合并

    可以使用cat命令,有两种实现的方式,一种将两个文件合并的到一个新的文件,另一种将一个文件追加到另一个文件的末尾. 方法一:使用cat命令从文件中读入两个文件,然后将重定向到一个新的文件.这种方法可以 ...

  8. HTML两张图片叠加问题的进一步修改

    要想两张图片叠加,只需在circle添加一个Position:absolute就OK了 以上几步,很多大侠前辈都已经说过,相信不用再啰嗦,我想说的是一种扩展,将示例放到右边,可能因为我悟性低,研究了一 ...

  9. 【转载】Python中如何高效实现两个字典合并,三种方法比较。

    本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个 ...

随机推荐

  1. javascript属性一览

    getElementsByTagName() 方法可返回带有指定标签名的对象的集合. getElementsByName() 方法可返回带有指定名称的对象的集合. getAttribute() 方法返 ...

  2. javascript addEventListener方法

    addEventListener是一个侦听事件并处理相应的函数. DOM方法 addEventListener() 和 removeEventListener()是用来分配和删除事件的函数. 这两个方 ...

  3. Swift - whose view is not in the window hierarchy 问题解决方法

    问题现象:想在页面初始化的时候,使用self.presentViewController方法弹出个告警提示框UIAlertController.但行后报了个如下告警,同时告警框也出不来. 1 2015 ...

  4. SVN的项目管理

    基于SVN的项目管理——集中与分散   我们在此处不讨论 GIT 比 SVN 好多少,也不讨论 Maven 和 Gradle 哪个好用,基于现有的开发环境,大多数公司还是采用 SVN + Maven ...

  5. python 内存泄露的诊断 - 独立思考 - ITeye技术网站

    python 内存泄露的诊断 - 独立思考 - ITeye技术网站 python 内存泄露的诊断 博客分类: 编程语言: Python Python多线程Blog.net  对于一个用 python ...

  6. [C++]引用浅析

    Date:2013-12-22 Summary: 引用数据类型的一些概念记录(沟通中提到引用必须结合语境才能知道说的是引用变量还是“引用”这一行为,再次提到引用指的一般是引用变量) Contents: ...

  7. 简单的三方登录SDK示例,Android Activity之间数据的传递

    先建立Library工程,即普通工程然后在Android的属性勾选Library选项. 这里建立的工程为 mySdk ,Activity名为LoginActivity. LoginActivity代码 ...

  8. HTML5初步——新的表单元素和属性

    HTML5初步--新的表单元素和属性 HTML5初步--新的表单元素和属性 <!DOCTYPE html> <html> <head> <meta chars ...

  9. iOS App 性能优化总结

    今天简单总结一些clientapp 优化的方案和方向. 我相信开发一个app大部分团队都能够完毕,可是性能久不一样啦,和我们都写一个冒泡算法一样,我相信每一个人写的冒泡算法都不一样,这些区别就带来了性 ...

  10. 阿里巴巴2015研究project普通笔试题,与答案

    欢迎您对这篇文章的其他建议.我可以留言在以下平台. 个人博客网站:www.anycodex.com/blog/ Csdn博客网站:http://my.csdn.net/?ref=toolbar 微博: ...