我是C ++的新手,并尝试弄清楚这行代码的含义:
cur_rect = cv::Rect(cur_rect) & cv::Rect(0, 0, mat->cols, mat->rows); // here
if( cv::Rect(cur_rect) == cv::Rect() ) //here
{
.......
}
答案 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
类的代码。
对于&
重载运算符 - 假设这是在做一个交集或联合。再一次没有代码,很难说。