您的位置:首页 > 运维架构

opencv 图像融合裁剪

2017-12-15 20:57 239 查看
//mat::copyTo用法:

const char* filename="C://Users//huashuo111//Desktop//路飞.jpg";
Mat img=imread(filename,1);
//resize(img,img,Size(),0.5,0.5);
Mat img1=imread("C://Users//huashuo111//Desktop//logo.jpg");
Mat imgRoi=img(Rect(img.cols-img1.cols,0,img1.cols,img1.rows));//融合区域
Mat img2=imread("C://Users//huashuo111//Desktop//logo.jpg",0);//掩码
img1.copyTo(imgRoi,img2);//img2掩码中某点灰度值不为0,则把img1该点处值付给imgRoi;否则imgRoi保持不变
imshow("融合",img);


原图:



掩码:



效果:



addWeighted 用法:

cvAddWeighted( const CvArr* src1, double alpha, const CvArr* src2, double beta, double gamma, CvArr* dst );
src1 //第一个原数组.
alpha //第一个数组元素的权值
src2 //第二个原数组
beta //第二个数组元素的权值
dst //输出数组
gamma //添加的常数项。
函数 cvAddWeighted 计算两数组的加权值的和:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
说以说0.7和0.9分别代表两个图像在dst图像中占得比例,是由你自己给定的,后面的0只是起一个微调作用。

const char* filename="C://Users//huashuo111//Desktop//路飞.jpg";
Mat img=imread(filename,1);
//resize(img,img,Size(),0.5,0.5);
Mat img1=imread("C://Users//huashuo111//Desktop//logo.jpg");
Mat imgRoi=img(Rect(img.cols-img1.cols,0,img1.cols,img1.rows));//融合区域

addWeighted(imgRoi,0.5,img1,0.5,0.0,imgRoi);
imshow("融合",img);
imwrite("C://Users//huashuo111//Desktop//融合.jpg",img);


效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: