使用openCV求两幅图像加和
来源:互联网 发布:win10办公软件下载 编辑:程序博客网 时间:2024/05/18 01:40
本文转自:http://blog.csdn.net/chenjiazhou12/article/details/21105627 谢谢博主!
这个范例相对来说比较简单,简单到在OpenCV的sample里面都没有提供源代码,只能自己复制黏贴tutorial中的代码了,范例中介绍了线性混合操作的原理,和OpenCV提供的 addWeighted()函数的用法,虽然简单,但实现的功能还是挺有趣的,看看吧。
1、原理
线性混合操作 也是一种典型的二元(两个输入)的 像素操作 :
通过在范围 内改变 ,这个操可以用来对两幅图像或两段视频产生时间上的 画面叠化 (cross-dissolve)效果。主要是在第一幅图片中提取一定权重的像素值,在第二幅图片中提取一定权重的像素值,然后相加赋值给最后的图片,就这么简单。
2、代码实现
- // Adding (blending) two images using OpenCV.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <opencv2/core/core.hpp>
- #include <opencv2/highgui/highgui.hpp>
- #include <iostream>
- using namespace cv;
- int main( int argc, char** argv )
- {
- 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 iff it is between 0 and 1
- if( alpha >= 0 && alpha <= 1 )
- { alpha = input; }
- /// Read image ( same size, same type )
- src1 = imread("LinuxLogo.jpg");
- src2 = imread("WindowsLogo.jpg");
- 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);
- imshow( "Linear Blend", dst );
- waitKey(0);
- return 0;
- }
3、运行结果
图1、alpha值为0.5 图2、alpha值为0.2
4、总结
程序可以根据输入的alpha值,来确定权重,从而影响两幅图片所显示的情况。
addWeighted:
功能:计算两个矩阵的加权和
结构:
- void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1)
- src1:第一幅图片
- alpha :第一幅图片的权重
- src2 :第二幅图片,size和channel和第一幅图片一样
- beta :第二幅图片的权重
- dst :输出图片,size和chann和输入图片一样
- gamma :附加的数值
- dtype :默认为-1,即输出图片深度和src1图片深度一样
0 0
- 使用openCV求两幅图像加和
- OpenCV 图像使用和操作
- OpenCV 图像使用和操作
- 【学习OpenCV】图像加噪
- 【OpenCV入门教程】图像加噪
- OpenCV图像的使用和操作
- OpenCV操作矩阵和图像的函数之加和阿尔法融合(add)
- opencv学习(8)图像加操作
- python加opencv进行图像处理
- python opencv(10)图像的加噪
- 使用OpenCV融合图像
- 使用OpenGL和OpenCV分别显示三维模型和图像
- 图像加噪和图像滤波
- opencv和magick两个图像处理库的使用心得
- Leap Motion 使用OpenCV获取和显示图像
- 使用OpenCV进行图像创建、保存和复制
- OpenCV 简单的图像混合和滑动条使用
- opencv和magick两个图像处理库的使用心得
- Map的存储方式
- 64位系统打开office总是出现配置进度
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- MySQL批量插入性能优化(二)
- JMS之activeMQ--点对点通信
- 使用openCV求两幅图像加和
- cocos2dx richText
- 小米智能插座采用Marvell EZ-Connect芯片解决方案--88MC200微控制器、Avastar 88W8801
- Swiper开启循环模式页面button失效
- 随笔记录2
- OC基础知识
- 设置textview字体颜色的几种方法
- maven in action(五)maven继承和聚合
- Redis、Memcached、Guava、Ehcache中的算法