opencv线性混合(适用于两张不同尺寸的图片)
2018-03-14 16:52
621 查看
关于线性混合,Opencv官方文档说的要两张相同尺寸的图片,这个条件太苛刻了,所以我这里通过改变其中一张图片大小使其和另外一张图片尺寸相同,先给出两张漂亮的图片:
a.jpg
b.jpg
然后代码就是实现两张图片的叠加效果,是不是很期待啊,哈哈哈!!#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
double alpha = 0.5; double beta; double input;
Mat img_src1,img_src2,src2, dst;
cout<<" Simple Linear Blender "<<std::endl;
cout<<"-----------------------"<<std::endl;
cout<<"* Enter alpha [0-1]: ";
cin>>input;
if(alpha >=0 && alpha<1 )
{
alpha = input;
}
img_src1 = imread("D:\\visiopj\\线性混合\\a.jpg");
src2 = imread("D:\\visiopj\\线性混合\\b.jpg");
//改变图像2的大小,并且使其与图像1相同
resize(src2,img_src2,Size(500,311));
//cout<<img_src2.size().width<<endl;
if (!img_src1.data)
{
printf("Error loading src1 \n"); return -1;
}
if(!img_src2.data)
{
printf("Error loading src2 \n"); return -1;
}
namedWindow("Linear Blend", 1);
beta = (1.0 - alpha);
addWeighted(img_src1,alpha,img_src2,beta,0.0,dst);
imshow("Linear Blend",dst);
waitKey(0);
return 0;
}代码不难理解,所以这里就不解释了,关键在于首先使用img_src1.size().width和img_src.size().height分别查看a.jpg的宽和高(这里的宽和高分别为500和311),然后对src2(b.jpg)使用resize重新设置尺寸大小,使其和img_src1的尺寸一样,这样后面我们就能使用addWeighted函数进行线性混合
下面给出大家期待的效果图
,怎么样,还喜欢把
a.jpg
b.jpg
然后代码就是实现两张图片的叠加效果,是不是很期待啊,哈哈哈!!#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
double alpha = 0.5; double beta; double input;
Mat img_src1,img_src2,src2, dst;
cout<<" Simple Linear Blender "<<std::endl;
cout<<"-----------------------"<<std::endl;
cout<<"* Enter alpha [0-1]: ";
cin>>input;
if(alpha >=0 && alpha<1 )
{
alpha = input;
}
img_src1 = imread("D:\\visiopj\\线性混合\\a.jpg");
src2 = imread("D:\\visiopj\\线性混合\\b.jpg");
//改变图像2的大小,并且使其与图像1相同
resize(src2,img_src2,Size(500,311));
//cout<<img_src2.size().width<<endl;
if (!img_src1.data)
{
printf("Error loading src1 \n"); return -1;
}
if(!img_src2.data)
{
printf("Error loading src2 \n"); return -1;
}
namedWindow("Linear Blend", 1);
beta = (1.0 - alpha);
addWeighted(img_src1,alpha,img_src2,beta,0.0,dst);
imshow("Linear Blend",dst);
waitKey(0);
return 0;
}代码不难理解,所以这里就不解释了,关键在于首先使用img_src1.size().width和img_src.size().height分别查看a.jpg的宽和高(这里的宽和高分别为500和311),然后对src2(b.jpg)使用resize重新设置尺寸大小,使其和img_src1的尺寸一样,这样后面我们就能使用addWeighted函数进行线性混合
下面给出大家期待的效果图
,怎么样,还喜欢把
相关文章推荐
- OpenCV入门:(四:混合两张图片)
- OpenCV 两张大小不同图片的叠加
- 使用opencv查找两张图片不同的部分
- 如何使用OPENCV实现两张图片的混合(PS中的图层不透明度)
- 学习opencv 混合两张图片
- opencv中实现两幅不同尺寸大小图片的相加
- PHP图片自动裁切应付不同尺寸的显示
- 使用OpenCV合成两张图片
- opencv图像线性混合操作
- OpenCV 关于两张图片的整合问题
- OpenCV2马拉松第4圈——图片混合
- 转:OpenCV学习笔记3:找出人脸,同时比较两张图片中的人脸相似度
- 基础学习笔记之opencv(2):haartraining前将统一图片尺寸方法
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
- php将图片保存为不同尺寸图片的图片类实例
- Opencv学习之图像金字塔与图片尺寸缩放
- 用c#怎么比较两张图片的不同
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
- Python+Opencv识别两张相似图片
- opencv 学习之图像可调节线性混合