目录
1、概念
在图像处理的时候,常常我们只想对一部分图像进行处理,也就是感兴趣区域(ROI,region of interest)。我们把一部分图像区域分化独立出来进行单独处理,这样不仅减少了图像处理分析的工作量,而且有利于精度的提高和减少处理时间。
定义ROI区域的两种方法:
(1)Rect()函数,指定矩形的左上角坐标和矩形的长宽来定义一个矩形区域作为ROI区域;
Mat imageROI = image(Rect(x, y, width, height);
// 左上角坐标 宽,高
(2)Range()来指定感兴趣的行和列的范围,Range是指从初始索引到终止索引的(不包括终止索引)的一段连续序列;
Mat imageROI = image(Range(y,y+imageROI.rows),Range(x, x+image.ROI.cols));
// 起始行,结束行 起始列,结束列
2、代码
//ROI感兴趣区域
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
Mat src, dst;
//图像初始化
void Image_Init()
{
src = imread("Resource/test.jpg"); //读取
if (src.empty())
{
printf("could not load the picture...");
}
}
//显示图像
void Image_Show()
{
imshow("原图", src);
imshow("ROI", dst);
}
int main()
{
Image_Init(); //图像初始化
// 选取 ROI区域
//方法一:
//dst = src(Rect(210, 210, 150, 200));
// 左上角坐标 宽和高
//方法二:
dst = src(Range(210, 210+200), Range(210, 210+150));
// 起始行,结束行 起始列,结束列
Image_Show(); //显示图像
waitKey(0);
return 0;
}
3、效果
参考资料
https://blog.youkuaiyun.com/zhu_hongji/article/details/81333200