2

私は C++ で OpenCV 2.4.4 を使用しており、Rect を x ピクセルだけ大きくしたいと考えています。OpenCVのドキュメントは、画像でこれを使用する方法の良い例を提供しています(「特定の量だけ長方形を拡大または縮小する」を探してください)

涼しい。これを実際のC++コードに入力する方法がわからない唯一の問題。私は試した:

Rect rect=oldrect+-10; Rect rect=oldrect-+10; Rect rect=oldrect±10; (念のため、この記号をhttp://en.wikipedia.org/wiki/Plus-minus_signからコピーしました。

それらのいずれかで醜いエラーが発生します。

誰かが説明してくれませんか、私が使用すべき巧妙なシンボルは何であり、HTML 内に含めることは不可能だったので、画像として埋め込まれています。

4

2 に答える 2

6

これは、C++ の "+=" の数学表記です。実際に ± を直接使用することはありません。例えば:

//make a rectangle that's 10x10 and centered at (0, 0)
cv::Rect rect(0, 0, 10, 10);
std::cout << "Original Rectangle: " << rect.area() << std::endl;

//manual addition to rectangle dimensions -- this will make bigger_rect be 20x20
cv::Rect bigger_rect = rect;
bigger_rect.height += 10;
bigger_rect.width += 10;
std::cout << "Bigger Rectangle: " << bigger_rect.area() << std::endl;

//other method of adding to a rectangle's area -- this will increase rect to be 20x20        
rect += cv::Size(10, 10);
std::cout << rect.area() << std::endl;

したがって、長方形の高さと幅に 10 を追加する例を実行するには、±記号が次と同等であると考えてください。+= cv::Size(width, height)

まあ、あなたは多かれ少なかれ正しい考えを持っていました...

編集:あなたのコメントに関しては、詳しく説明する必要があります: rect += ポイント、rect -= ポイント、rect += サイズ、rect -= サイズは、次のような 4 つの異なる操作です。

rect += pointrect -= point: 四角形をポイント単位でシフトします。ここで、ポイントはcv::Pointオブジェクトを参照します。つまり、ポイントを : として宣言できます cv::Point pt(5, 5);。そうするとrect += pt、四角形の x メンバーと y メンバーがシフトします (デフォルトでは、これらは四角形の左上を参照します)。座標) を 5 ずつ - たとえば、 and を実行するのと同じrect.x += 5ですrect.y += 5rect -= point足し算ではなく引き算ですが、のケースは同じです (そうrect.x -= 5rect.y -= 5)。

rect += size座標位置とrect -= sizeは対照的に、長方形のサイズを変更します。これ+=により、長方形の領域が増加し、-=減少します。

于 2013-04-11T06:22:43.210 に答える