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

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

时间: 2024-10-08 10:43:56

关于openCV中Rect()的解释的相关文章

Opencv中Rect类

转载: Rect_类有些意思,成员变量x.y.width.height,分别为左上角点的坐标和矩形的宽和高.常用的成员函数有Size()返回值为一个Size,area()返回矩形的面积,contains(Point)用来判断点是否在矩形内,inside(Rect)函数判断矩形是否在该矩形内,tl()返回左上角点坐标,br()返回右下角点坐标.值得注意的是,如果想求两个矩形的交集,并集,可以用如下格式 [cpp] view plain copy Rect rect = rect1 & rect2;

OpenCV中Rect矩阵类

成员变量x.y.width.height,分别为左上角点的坐标和矩形的宽和高. 常用的成员函数有: Size()返回值为一个Size area()返回矩形的面积 contains(Point)用来判断点是否在矩形内 inside(Rect)函数判断矩形是否在该矩形内 tl()返回左上角点坐标 br()返回右下角点坐标. // 移动矩阵 Rect rectShift = rect + point; // 缩放矩阵 Rect rectScale = rect + size; // 求两矩阵交集和并集

OpenCv学习笔记(三)---OpenCv中基本数据类型--Point,Size,Rect,Scalar,Vec3b类类型的详细解释及其OpenCv中源代码的详细分析

/********************************************************************************************* 程序功能: OpenCv的基本数据结构源代码的解读,我们常用的OpenCv的基本数据结构有六种: 1--Point类 2--Size类 3--Rect类 4--Scalar类 5--Vec3b--向量模板类 6--Range类 编写环境: OpenCv2.4.8+VS2010 地点时间: 陕西师范大学 201

OpenCV中的模板匹配方法及其应用

模板匹配(TemplateMatching)就是在一幅图像中寻找和模板图像(template)最相似的区域,该方法原理简单计算速度快,能够应用于目标识别,目标跟踪等多个领域.OpenCV中对应的函数为matchTemplate或cvMatchTemplate(参考opencvdoc),简单介绍下: 1.函数原型 C++: void matchTemplate(InputArray image, InputArray templ, OutputArray result, int method);

[OpenCV-Python] OpenCV 中的图像处理 部分 IV (六)

部分 IVOpenCV 中的图像处理 23 图像变换 23.1 傅里叶变换目标本小节我们将要学习: ? 使用 OpenCV 对图像进行傅里叶变换 ? 使用 Numpy 中 FFT(快速傅里叶变换)函数 ? 傅里叶变换的一些用处 ? 我们将要学习的函数有:cv2.dft(),cv2.idft() 等原理 傅里叶变换经常被用来分析不同滤波器的频率特性.我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域特性.实现 DFT 的一个快速算法被称为快速傅里叶变换(FFT).关于傅里叶变换的细节知

[OpenCV-Python] OpenCV 中计算摄影学 部分 IX 对象检测 部分 X

部分 IX计算摄影学 49 图像去噪目标 ? 学习使用非局部平均值去噪算法去除图像中的噪音 ? 学习函数 cv2.fastNlMeansDenoising(),cv2.fastNlMeansDenoisingColored()等原理 在前面的章节中我们已经学习了很多图像平滑技术,比如高斯平滑,中值平滑等,当噪声比较小时这些技术的效果都是很好的.在这些技术中我们选取像素周围一个小的邻域然后用高斯平均值或者中值平均值取代中心像素.简单来说,像素级别的噪声去除是限制在局部邻域的.噪声有一个性质.我们认

opencv中的 HOGDescriptor 类

其定义在  object.hpp中找到的: [cpp] view plain copy struct CV_EXPORTS_W HOGDescriptor { public: enum { L2Hys=0 }; enum { DEFAULT_NLEVELS=64 }; CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,16), blockStride(8,8), cellSize(8,8), nbins(9), derivApertu

OpenCV中的Haar+Adaboost(五):AdaBoost之DAB与GAB

之前的文章主要讲解了OpenCV中与检测相关的内容,包括Haar特征.积分图和检测分类器结构:之后的文章将逐步开始介绍训练相关的内容.而本节主要介绍AdaBoost的理论,以及AdaBoost中的DAB与GAB算法,为后续讲解奠定基础. (一) AdaBoost背景介绍 在了解AdaBoost之前,先介绍弱学习和强学习的概念: 1. 弱学习:识别错误率小于1/2,即准确率仅比随机猜测略高的学习算法 2. 强学习:识别准确率很高并能在多项式时间内完成的学习算法 显然,无论对于任何分类问题,弱学习都

有关meanshift跟踪的理解(在opencv中实现)(转载)

meanshift算法思想其实很简单:利用概率密度的梯度爬升来寻找局部最优.它要做的就是输入一个在图像的范围,然后一直迭代(朝着重心迭代)直到满足你的要求为止.但是他是怎么用于做图像跟踪的呢?这是我自从学习meanshift以来,一直的困惑.而且网上也没有合理的解释.经过这几天的思考,和对反向投影的理解使得我对它的原理有了大致的认识. 在opencv中,进行meanshift其实很简单,输入一张图像(imgProb),再输入一个开始迭代的方框(windowIn)和一个迭代条件(criteria)