圖像處理領(lǐng)域,有一個(gè)非常重要的名詞ROI。
什么是ROI?
它的英文全稱是Region Of Interest,對應(yīng)的中文解釋就是感興趣區(qū)域。
感興趣區(qū)域,就是我們從圖像中選擇一個(gè)圖像區(qū)域,這個(gè)區(qū)域就是圖像分析所關(guān)注的焦點(diǎn)。我們?nèi)Χㄟ@個(gè)區(qū)域,那么我們要處理的圖像就從大圖像變?yōu)橐粋€(gè)小圖像區(qū)域了,這樣以便進(jìn)行進(jìn)一步處理,可以大大減小處理時(shí)間。
定義ROI區(qū)域有兩種方法:
第一種,指定矩形的坐標(biāo),并且規(guī)定好他的長寬。
Mat img = imread("1.jpg");Mat roi = img(Rect(500, 200, 100, 300));//Rect四個(gè)形參分別是:x坐標(biāo),y坐標(biāo),長,高;注意(x,y)指的是矩形的左上角點(diǎn)
第二種,指定感興趣的行或列的范圍。
Mat img = imread("1.jpg");Mat roi = img(Range(250, 250 + 100), Range(200, 200 + 100));//Range兩個(gè)形參分別是:起始行或列,起始行或列+偏移量
簡單看一下ROI區(qū)域的使用方法,下面的程序定義了ROI,并且我用綠框標(biāo)記出來。
#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); //將感興趣區(qū)域框出來 imshow("ROI", srcImage); waitKey(); return 0; }
綠框位置就是我們選的感興趣區(qū)域。
有時(shí)候我們不僅想把ROI標(biāo)記出來,還想把ROI提取出來,成為一幅單獨(dú)圖片,那我們代碼可以這么寫: