两张图片的叠加

在opencv函数里通过调用addWeighted函数来叠加两张图片,但这里有2个条件:

1、两张图片Size相同

2、两张图片channels相同

如果两张不同的图片A和B,假设A的大小比B大,则这时要进行叠加的话,有如下几种思路:

1、将B的图片扩大到和A一样 或者 将A的图片缩减到和B一样,在进行叠加

2、可以在A的图片中找和B同样大的ROI区域,在这区域内叠加

以下为代码:

注意的是这里word图片比lena大,所以我在这里先进行了resize,在进行ROI的另一种方法时,掩码mask要是灰度图,因为其功能是在mask中不为0的位置,copyto原值,如果是添上一个商标之类的东西,其效果要比前者好

// a7.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv245.h>


using namespace std;
using namespace cv;



int _tmain(int argc, _TCHAR* argv[])
{
	Mat logo = imread("C:\\Users\\sony\\Desktop\\word.png");
	resize(logo, logo, Size(200, 200));
	Mat image = imread("C:\\Users\\sony\\Desktop\\pic\\Lena.jpg");

	Mat imageROI = image(Rect(0, 0, logo.cols, logo.rows));
	/*addWeighted(imageROI, 0.2, logo, 1, 0, imageROI);*/
	Mat mask ;
	cvtColor(logo, mask, CV_RGB2GRAY);
	logo.copyTo(imageROI, mask);
	
	imshow("1", image);
	waitKey(0);

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值