1

私はC++を初めて使用し、このコード行の意味を理解しようとします。

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

2 に答える 2

8

パーツはRect & Rect2つの長方形と交差し、2つの入力が重なると、空でない長方形が返されます。

したがって、結果を比較してRect()、交差点があったかどうかを確認できます。コードはクロップcur_rectして(0, 0, mat->cols, mat->rows)、空かどうかをチェックします。

出典:

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

OpenCvで2つのROIが交差するかどうかを簡単に検出するにはどうすればよいですか?

編集

別の実装、少しクリーン:

// 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
    ...
}
于 2012-05-10T09:52:54.117 に答える
1

cv::Rect(...)メソッド(またはそれらのファミリー)が長方形のオブジェクトを返すと仮定しています。あなたが理解していない行は、==長方形を比較するオーバーロードされた演算子()であると思います。

しかし、私はcvクラスのコードを持っていないので、ここで多くの仮定をしています。

オーバーロードされた演算子に関して&は、これが共通部分または和集合を実行していると想定されます。もう一度、コードなしで言うのは難しいです。

于 2012-05-10T09:49:05.133 に答える