码迷,mamicode.com
首页 > 其他好文 > 详细

关于openCV中Rect()的解释

时间:2017-11-04 00:22:25      阅读:459      评论:0      收藏:0      [点我收藏+]

标签:ges   enc   语句   png   描述   分享   定义   迭代   地方   

目前在学习怎么提取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()函数中的四个参数,前两个可以看作是坐标,用于定位到我们所需感兴趣区域矩阵的左上角的地方,而后面两个参数描述的是待提取的矩阵的长(行数)和宽(列数)。

 

继续总而言之,感觉自己就是一个傻子哦。。

 

关于openCV中Rect()的解释

标签:ges   enc   语句   png   描述   分享   定义   迭代   地方   

原文地址:http://www.cnblogs.com/whatever779/p/7780745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!