1

これは、パラメータにそれぞれの値を指定して長方形を描画する関数です。

void rectangle(Mat& img, Point pt1, Point pt2,const Scalar& color, int thickness=1,int lineType=8, int shift=0);

ユーザーはこの関数を使用して、マウスでROIを設定し、テンプレートマッチングアプリケーションで検出された一致に長方形を描画できます。私の質問は、2番目と3番目のパラメータはここでのポイントです。ユーザーがさらに処理するためにポイント1とポイント2の値を取得したい場合、それを取得する方法は?!両方のポイント値を印刷する方法は?!doubleまたはint変換をポイントしますか?!

誰でも、私の疑問をクリアします。助けてくれてありがとう!

更新しました:

void mouseHandler(int event, int x, int y, int flags, void* param)

{

if (event == CV_EVENT_LBUTTONDOWN && !drag)
{
    /* left button clicked. ROI selection begins */
    point1 = Point(x,y);
    drag = 1;

}

if (event == CV_EVENT_MOUSEMOVE && drag)
{
    /* mouse dragged. ROI being selected */
    Mat img1 = mod_tempimg.clone();
    point2 = Point(x, y);
    rectangle(img1, point1, point2, CV_RGB(255, 0, 0), 1, 8, 0);
    imshow("image", img1);

}

if (event == CV_EVENT_LBUTTONUP && drag)
{

    Mat img2=mod_tempimg.clone();
    point2 = Point(x, y);
rect = Rect(point1.x,point1.y,x-point1.x,y-point1.y);
     drag = 0;
     roiImg = mod_tempimg(rect1);
    imshow("image", img2);
}

if (event == CV_EVENT_LBUTTONUP)
{
   /* ROI selected */
    select_flag = 1;
    drag = 0;
}

上記のコードで、この行からポイント値を取得する方法は?!

  rect = Rect(point1.x,point1.y,x-point1.x,y-point1.y);

長方形の角度を見つけるのに役立つ値がわかっている場合。

4

2 に答える 2

5

2点の長方形を描くプログラムを書いているときは、手元に点があります。

ポイントを印刷します。cout << pt1

ポイントのx値とy値を出力します。cout << pt1.x << pt1.y

x値を明示的に割り当てます:pt1.x = 0

ある時点でのピクセル強度を取得します:image.at<uchar>( pt1) [グレースケール画像の場合]

于 2013-03-26T04:58:20.370 に答える
5

更新した後でも、質問は私には明確ではありません。正確に何を求めているのかわかりません。とにかく、私が理解している限り、あなたはここで長方形のオブジェクトを作成しています:

rect = Rect(point1.x,point1.y,x-point1.x,y-point1.y);

後でrectのコーナーポイントを取得したい。

rect.tl()左上隅のポイントを rect.br()示し、右下隅のポイントを示します。コーナーのx値とy値は次の方法で取得することもできます。rect.tl().x or rect.br().y

「長方形の角度を見つける」とはどういう意味かわかりません。長方形には90度の角度があります。

于 2013-03-28T10:23:15.800 に答える