两张图片的叠加

来源:互联网 发布:告白电影知乎 编辑:程序博客网 时间:2024/06/12 00:30

在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;}


原创粉丝点击