[Opencv初探之四]:图像Mask叠加和ROI选取
1.ROI区域选取
方法一:使用cv:Rect.顾名思义,cv::Rect表示一个矩形区域。指定矩形的左上角坐标(构造函数的前两个参数)和矩形的长宽(构造函数的后两个参数)就可以定义一个矩形区域。
imageROI=image(Rect(500,250,logo.cols,logo.rows));
方法二:指定感兴趣行或列的范围(Range)。Range是指从起始索引到终止索引(不包括终止索引)的一连段连续序列。cv::Range可以用来定义Range。如果使用cv::Range来定义ROI,那么前例中定义ROI的代码可以重写为:
imageROI=srcImage3(Range(250,250+logoImage.rows),Range(200,200+logoImage.cols));
完整代码:
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage1= imread("../test.jpg");
Mat logoImage= imread("../logo.jpg");
if(!srcImage1.data ) { printf("fail to read srcImage1~! \n"); return false; }
if(!logoImage.data ) { printf("fail to read logoImage! \n"); return false; }
//【2】定义一个Mat类型并给其设定ROI区域
Mat imageROI= srcImage1(Rect(800,700,logoImage.cols,logoImage.rows));
//【3】加载掩模(必须是灰度图)