2016-04-26 8 views
-3

openCVを使用してユーザーがクリックした画像の座標を入力しようとしています。私はcallBack関数を使用して、異なる点の座標を繰り返し与える方法を理解できません。クリックするポイント数があります。マウスのコールバックのopenCVを使用して画像の座標を入力する

+0

あなたが探している座標のどのような?いくつかのデータと期待される結果を共有できれば役に立ちます。 –

+0

私は三角測量の目的でクリックしたピクセルのx座標とy座標が必要です。 –

答えて

1

C++コード:

#include<opencv2/core/core.hpp> 
#include<opencv2/imgproc/imgproc.hpp> 
#include<opencv2/highgui/highgui.hpp> 
#include<iostream> 

using namespace cv; 
using namespace std; 
Mat img(400,400,CV_8U,Scalar(120,120,120));//global for mouse callback 
vector<Point> points; // to store clicked points 
void CallBackFunc(int event, int x, int y, int flags, void* userdata) 
{ 
    if (event == EVENT_LBUTTONDOWN) 
    { 
     circle(img,Point(x,y),5,Scalar(255,255,255),1);//global Mat is never refreshed after 1st imread 
     cout << "Mouse move over the window - position (" << x << ", " << y << ")" << endl; 
     points.push_back(Point(x,y)); // store clicked point 

    } 

    if(points.size() == 3) 
    { 
    line(img, points[0], points[1], Scalar(0,255,0),1); 
    line(img, points[0], points[2], Scalar(0,255,0),1); 
    line(img, points[1], points[2], Scalar(0,255,0),1); 
    points.clear(); 
    }  
} 

int main() 
{ 

    namedWindow("img");//for mousecallback 
     int event; 

    for(;;) 
     { 

      setMouseCallback("img", CallBackFunc, NULL); 

      imshow("img",img); 


      char c=waitKey(10); 
      if(c=='b') 
       { 
        break; 
       } 
     } 

    return 1; 
} 
関連する問題