图像处理领域,有一个非常重要的名词ROI。
什么是ROI?
它的英文全称是Region Of Interest,对应的中文解释就是感兴趣区域。
感兴趣区域,就是我们从图像中选择一个图像区域,这个区域就是图像分析所关注的焦点。我们圈定这个区域,那么我们要处理的图像就从大图像变为一个小图像区域了,这样以便进行进一步处理,可以大大减小处理时间。
定义ROI区域有两种方法:
第一种,指定矩形的坐标,并且规定好他的长宽。
Mat img = imread("1.jpg");Mat roi = img(Rect(500, 200, 100, 300));//Rect四个形参分别是:x坐标,y坐标,长,高;注意(x,y)指的是矩形的左上角点
第二种,指定感兴趣的行或列的范围。
Mat img = imread("1.jpg");Mat roi = img(Range(250, 250 + 100), Range(200, 200 + 100));//Range两个形参分别是:起始行或列,起始行或列+偏移量
简单看一下ROI区域的使用方法,下面的程序定义了ROI,并且我用绿框标记出来。
#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;int main(){ Mat srcImage = imread("lol0.jpg"); if (!srcImage.data) { cout << "读取原始图失败!" << endl; return -1; } rectangle(srcImage, Rect(0, 0, 600, 200), Scalar(0, 255, 0),2); //将感兴趣区域框出来 imshow("ROI", srcImage); waitKey(); return 0; }
绿框位置就是我们选的感兴趣区域。
有时候我们不仅想把ROI标记出来,还想把ROI提取出来,成为一幅单独图片,那我们代码可以这么写: