C++ can';我不理解下面的c++;代码行 cols,mat->rows),然后检查它是否为空

C++ can';我不理解下面的c++;代码行 cols,mat->rows),然后检查它是否为空,c++,opencv,C++,Opencv,我假设cv::Rect(…)方法(或它们的家族)返回一个矩形对象。我假设您不理解的那一行是比较矩形的重载运算符(==) 但是我在这里做了很多假设,因为我没有cv类的代码 至于&重载运算符-我们假设这是在进行交叉或并集。同样,如果没有代码,很难说。我假设cv::Rect(…)方法(或它们的族)返回一个矩形对象。我假设您不理解的那一行是比较矩形的重载运算符(==) 但是我在这里做了很多假设,因为我没有cv类的代码 至于&重载运算符-我们假设这是在进行交叉或并集。同样,如果没有代码,很难说。矩形&Re

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

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


至于
&
重载运算符-我们假设这是在进行交叉或并集。同样,如果没有代码,很难说。

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

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


至于
&
重载运算符-我们假设这是在进行交叉或并集。同样,如果没有代码,很难说。

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

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

资料来源:

编辑 另一种实现,更简洁:

// 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
    ...
}

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

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

资料来源:

编辑 另一种实现,更简洁:

// 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
    ...
}

看起来按位AND运算符
&
对于
Rect
已经重载了-我猜他们正在使用它进行交叉点测试。你能说得更具体一点吗?“&”让你困惑吗?@亚历山德罗特鲁齐:是的!!“&”把我弄糊涂了,我不知道这个“&”是位运算符还是指针的地址….=)看起来按位AND运算符
&
对于
Rect
已经重载了-我猜他们正在使用它进行交叉点测试。你能说得更具体一点吗?“&”让你困惑吗?@亚历山德罗特鲁齐:是的!!“&”把我弄糊涂了,我不知道这个“&”是位运算符还是指针的地址….=)请参阅中的“除此之外”一段。请参阅《为什么它要构造一个新的
cv::Rect(cur_Rect)
》中的“除此之外”一段,以进行比较,但是,
cur_Rect
本身不会这样做吗?如果
cv::Rect()
是一个空的Rect,那么
if
测试不是倒置的吗?它正在测试交叉点是否为空?我认为
cv::Rect(cur_Rect)
部分确实是无关的,但它会工作。对响应进行了一些编辑,我认为这是一种裁剪功能。我认为我应该实现如下功能:
cur\u rect&=cv::rect(0,0,mat->cols,mat->rows);如果(cur_rect.area()==0){…}
感谢您回复@TaZ!!这对我帮助很大为什么它要构造一个新的
cv::Rect(cur_Rect)
来进行比较,而
cur_Rect
本身不会吗?如果
cv::Rect()
是一个空的Rect,那么
if
测试不是倒置的吗?它正在测试交叉点是否为空?我认为
cv::Rect(cur_Rect)
部分确实是无关的,但它会工作。对响应进行了一些编辑,我认为这是一种裁剪功能。我认为我应该实现如下功能:
cur\u rect&=cv::rect(0,0,mat->cols,mat->rows);如果(cur_rect.area()==0){…}
感谢您回复@TaZ!!这对我帮助很大