opencv 图像叠加ROI & 图像混合

来源:互联网 发布:淘宝代运营怎么样 编辑:程序博客网 时间:2024/05/29 09:04

设定图像感兴趣的区域ROI,可将另一幅图片叠加到该区域;或者通过addWeight函数进行线性混合,下面是以上两种方法的示例:


#include<iostream>

#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;


int main(int argc, int **argv) {

Mat src, logg;
src = imread("F:\\img\\dota2.jpg");
logg = imread("F:\\img\\dota_log02.jpg");
if (!src.empty()) {
cout << "src img opened error !" << endl;
}
if (!logg.empty()) {
cout << "logg img opened error !" << endl;
}
/* 方法一*/
Mat src02ROI = src(Range(20, 20 + logg.rows), Range(20, 20 + logg.cols));
//加载掩膜,必须是灰度图像
Mat mask = imread("F:\\img\\dota_log02.jpg", 0);
//将掩膜复制到ROI
logg.copyTo(src02ROI,mask);
namedWindow("srcROI");
imshow("log02", logg);
imshow("srcROI", src);


/* 方法二*/
Mat src01;
src01= imread("F:\\img\\dota1.jpg");
Mat log01 = imread("F:\\img\\dota_log01.jpg");
if (!src01.empty()) {
cout << "src01 img opened error !" << endl;
}
if (!log01.empty()) {
cout << "log01 img opened error !" << endl;
}
Mat src01ROI = src01(Range(20, 20 + log01.rows), Range(20, 20 + log01.cols));

double alptha = 0.4;
double beta = 0.6;
//Mat desImg = src.clone();

addWeighted(src01ROI, alptha, log01, beta, 0.0, src01ROI);
imshow("addWeighted src01", src01);
imshow("log01", log01);

waitKey(0);
return 0;

}





1 0
原创粉丝点击