2

私は OpenCV 関数を使用しようとしています:

double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)

2D (x1,y1), ..., (x4,y4) の 4 点で指定された輪郭があります。Point (x,y) が輪郭の内側か外側かをテストしたいと思います。しかし、輪郭を関数の入力として正しく指定する方法の参照が見つからないようです。

正しい結果が得られずに次の実装を試しました。

vector< Point2f > contour;

contour.push_back(Point2f(x1, y1));
contour.push_back(Point2f(x2, y2));
contour.push_back(Point2f(x3, y3));
contour.push_back(Point2f(x4, y4));

int inCont;
inCont = pointPolygonTest(contour, Point2f(x, y), false);

何か不足していますか?

4

1 に答える 1

4

関数は問題なく動作します(OpenCV 2.3.1):

vector<Point2f> points;

points.push_back(Point2f(0,0));
points.push_back(Point2f(0,4));
points.push_back(Point2f(4,4));
points.push_back(Point2f(4,0));

cout << pointPolygonTest(points, Point2f(5,1), false) << endl;
cout << pointPolygonTest(points, Point2f(1,1), false) << endl;
cout << pointPolygonTest(points, Point2f(0,0), false) << endl;

出力:

-1
1
0
于 2011-09-20T19:35:44.367 に答える