pointPolygonTest如何使用
时间: 2024-06-08 13:08:58 浏览: 41
基于python的cv2 模块常用方法及使用
`pointPolygonTest` 是 OpenCV 中的一个函数,用于判断一个点是否在一个多边形内部或外部。该函数的原型如下:
```
double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)
```
其中,`contour` 表示要判断的多边形,可以是一个 `vector<Point>`,也可以是一个 `Mat`,`pt` 表示要判断的点,`measureDist` 表示是否需要计算距离。
如果 `measureDist` 为 `false`,则函数的返回值为 `1` 表示点在多边形内部,为 `-1` 表示点在多边形外部,为 `0` 表示点在多边形的边界上。
如果 `measureDist` 为 `true`,则函数的返回值表示点到多边形边界的距离,如果点在多边形内部,则距离为负数。
下面是一个示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
// 创建一个多边形
vector<Point> contour;
contour.push_back(Point(50, 50));
contour.push_back(Point(200, 50));
contour.push_back(Point(200, 200));
contour.push_back(Point(50, 200));
// 判断点 (100, 100) 是否在多边形内部
Point2f pt(100, 100);
double dist = pointPolygonTest(contour, pt, false);
if (dist > 0)
{
cout << "Point is outside the contour" << endl;
}
else if (dist < 0)
{
cout << "Point is inside the contour" << endl;
}
else
{
cout << "Point is on the contour" << endl;
}
return 0;
}
```
阅读全文