OpenCV实践(4)- 叠加两幅图片
来源:互联网 发布:盒子设计软件绿色版 编辑:程序博客网 时间:2024/05/18 10:41
1 目标
(1) 什么是线性混合,有什么用?
(2) 怎样使用addWeighted混合两幅图像?
2 原理
详细的理论请参考计算机视觉:算法和应用一书。
这里我们直接应用其公式:
对于上面的公式,很有理解,等式右边就是两个像素值相加,但是权重比不同。所以,我们通过变化 ,区间是[0,1],这个操作就能带来一副由两幅图片临时相加得到的图像。如果将其应用在幻灯片放映或者视频播放中,岂不是很酷?
3 代码实现
道理很简单,直接上代码:
#include <cv.h>#include <highgui.h>#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 if it is between 0 and 1 if( input >= 0.0 && input <= 1.0 ) { alpha = input; } /// Read image ( same size, same type ) src1 = imread("../images/LinuxLogo.jpg"); src2 = imread("../images/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;}
4 代码解释
(1)为了实现上面的公式,
我们需要两幅源图像 和 ,我们使用下面的代码载入:
src1 = imread("../images/LinuxLogo.jpg");src2 = imread("../images/WindowsLogo.jpg");
警告:因为我们要叠加src1和src2,所以两幅图片必须具有相同的大小(高和宽)和类型。
(2) 应用addWeighted
beta = ( 1.0 - alpha );addWeighted( src1, alpha, src2, beta, 0.0, dst);
addWeighted的处理过程:
在这里, 就是上面代码中的0.0,它是一个标量,可以对合成后的图片进行像素的调整。
5 结论
运行结果:
上图中左半部分就是 = 0.0,右半部分是 = 100时的图片。
0 0
- OpenCV实践(4)- 叠加两幅图片
- 用OpenCV叠加(融合)两幅图像
- opencv两视频叠加(控制台版)
- OpenCV 两张大小不同图片的叠加
- OpenCV学习(二)叠加图片,叠加文字
- OpenCV两张图片叠加,一张旋转一定的角度,另一张不变,如何叠加?
- 两个div叠加(两张图片叠加)
- 两个div叠加(两张图片叠加)
- 两张图片的叠加
- 两张图片进行叠加
- 两张yuv图片叠加
- OpenCV-006:图片的叠加
- 用VB实现两幅图片半透明叠加
- 叠加两种图片的方法
- 实现两张图片的叠加
- Android OpenCV实现图片叠加,水印
- OpenCV基础篇之图片叠加
- OpenCV基础篇之图片叠加
- 【Theano】环境配置——“g++ not detected”
- 进程与线程的各种锁分析总结
- Java nio简介及使用示例
- 内部排序之插入排序:直接插入排序,折半插入排序,希尔排序
- [LeetCode]398. Random Pick Index
- OpenCV实践(4)- 叠加两幅图片
- 51. N-Queens
- 52. N-Queens II
- 53. Maximum Subarray
- POJ3268【最短路】
- 54. Spiral Matrix
- Light OJ 1282 Leading and Trailing (对数+快速幂)
- I AM ARRIVAL, I AM COMING.
- 55. Jump Game