无法理解以下c ++代码行

时间:2012-05-10 09:45:02

标签: c++ opencv

我是C ++的新手,并尝试弄清楚这行代码的含义:

cur_rect = cv::Rect(cur_rect) & cv::Rect(0, 0, mat->cols, mat->rows); // here
if( cv::Rect(cur_rect) == cv::Rect() )  //here
{
.......
}

2 个答案:

答案 0 :(得分:8)

Rect & Rect部分与两个矩形相交,并在两个输入重叠时返回一个非空矩形。

因此,您可以将结果与Rect()进行比较,以查看是否存在交叉点。您的代码将cur_rect裁剪为(0, 0, mat->cols, mat->rows),然后检查它是否为空。

来源:

http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html?highlight=rect

How can one easily detect whether 2 ROIs intersects in OpenCv?

修改

另一种实现方式,更清洁:

// crop cur_rect to rectangle with matrix 'mat' size:
cur_rect &= cv::Rect(0, 0, mat->cols, mat->rows);
if (cur_rect.area() == 0) {
    // result is empty
    ...
}

答案 1 :(得分:1)

我假设cv::Rect(...)方法(或其中的一族)返回一个矩形对象。您不理解的行,我假设是一个比较矩形的重载运算符(==)。

但我在这里做了很多假设,因为我没有cv类的代码。

对于&重载运算符 - 假设这是在做一个交集或联合。再一次没有代码,很难说。