定义ROI的两种方法
(1).使用表示矩形区域的Rect。他指定矩形的左上角左边和矩形的长宽以定义一个矩形区域
例:其中image是已经载入好的图片
Mat imageROI=image(Rect(x,y,xleng,yleng))
(2).指定感兴趣行或列的范围(Range),Range是指从起始索引到终止索引的一段联系序列
如:Mat imageROI=image(Range(500,500+xleng),Range(250,250+yleng))
代码如下:
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace cv;
int main()
{
Mat image3 = imread("3.jpg");
Mat image1 = imread("1.jpg");
if (!image3.data)
{
printf("第一张图片读取失败!\n");
return -1;
}
imshow("image3", image3);
if (!image1.data)
{
printf("第二张图片读取失败!\n");
return -1;
}
imshow("image1", image1);
//定义一个Mat类型并设置ROI区域
Mat imageROI = image3(Rect(15, 20, image1.cols, image1.rows));
//加载掩码
Mat mask = imread("1.jpg");
//将掩码复制到ROI
image1.copyTo(imageROI, mask);
imshow("利用ROI实验窗口叠加", image3);
waitKey();
return 0;
}
运行结果如下: