關於openCV中Rect()的解釋


目前在學習怎么提取Mat類中的感興趣區域,看到了一個函數叫Rect(),里面可以放四個參數,

舉個列子

創建一個單通道的矩陣,尺寸大小為10*10

Mat img(10, 10, CV_8UC1);  

使用迭代器將像素初始化為1-100

MatIterator_<uchar>imgit, imgend;
    int i = 1;
    for (imgit = img.begin<uchar>(), imgend = img.end<uchar>(); imgit != imgend; ++imgit)
    {
        (*imgit) = i;
        i++;
    }

此時如果輸出img,結果如下

現在進入正題,使用Rect()提取感興趣區域

Mat roi(img, Rect(0, 0, 10, 10));

解釋這個代碼:重新定義了一個Mat類名字叫做roi,用其來存儲從img中提取的感興趣區域。Rect()中有4個參數,比如在這里,就是(0,0,10,10),代表的意思是,我們先定位到(0,0)這個像素點,然后以這個點為基准,划出一個10*10的矩形,將此矩形包含的數據像素點存到roi中去。運行結果如下(實際上提取出了全部的數據矩陣):

如果我們改變Rect()函數內部參數的值為(1,3,4,6),代碼如下

Mat roi(img, Rect(1, 3, 4, 6));

上面這條語句描述的是,我們以坐標為(1, 3)的像素點為基准(數值為32),提取出一個長(行數)為4, 寬(列)為6的數據矩陣,運行結果如下:

 

 總之,Rect()函數中的四個參數,前兩個可以看作是坐標,用於定位到我們所需感興趣區域矩陣的左上角的地方,而后面兩個參數描述的是待提取的矩陣的長(行數)和寬(列數)。

 

繼續總而言之,感覺自己就是一個傻子哦。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM