注明:这一篇博文是读了opencv教程第4/5篇之后的整理,内容是关于感兴趣空间的选取,使用权值累加的方式把两张图片融合,分离图片的BGR通道和合成BGR通道为图片。
感兴趣区域ROI定义的两种方法
①使用Rect
Mat imageROI;
int beiginX=500;
int beginY=250;
imageROI = image1(Rect(beginX,beginY,image2.cols,image2.raws));//在image1(Mat类型)上构造了一个以(beginX,beginY)为左上角,第二张图片的宽高为宽高的一个区域
②使用Range
imageROI = image1(Range(beginY,beginY+image2.raws),Range(beginX,beginX+image2.cols));//定义的区域和上面一种是一样的
addWeighted函数
void addWeighted(InputArray src1,double alpha,InputArray src2,double beta,double gamma,OutArray dst,int dtype=-1);//dst = src1[i]*alpha+src2[i]*deta+gamma;
split函数
void split(const Mat &src,Mat *mvbegin)
void split(InputArray m , OutputArrayOfArrays mv)
第一个参数:要分多通道的Mat
第二个参数:输出的vector<Mat>类型的数据
Mat input;
vector<Mat> mats;
split(input,mats);
Mat blue =mats.at(0);//取出blue通道
merge函数
void merge(const Mat *mv,Size_tcount,OutputArray dst);
void merge(InputArrayOfArrays mv,OutputArray dst);//第一个参数是vector<Mat>类型的数据,第二个参数是混合生成的Mat图像