-3
openCVを使用してユーザーがクリックした画像の座標を入力しようとしています。私はcallBack関数を使用して、異なる点の座標を繰り返し与える方法を理解できません。クリックするポイント数があります。マウスのコールバックのopenCVを使用して画像の座標を入力する
openCVを使用してユーザーがクリックした画像の座標を入力しようとしています。私はcallBack関数を使用して、異なる点の座標を繰り返し与える方法を理解できません。クリックするポイント数があります。マウスのコールバックのopenCVを使用して画像の座標を入力する
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;
}
あなたが探している座標のどのような?いくつかのデータと期待される結果を共有できれば役に立ちます。 –
私は三角測量の目的でクリックしたピクセルのx座標とy座標が必要です。 –