opencv 判断点是否在多边形内

要使用 OpenCV 判断一个点是否在多边形内,可以使用 OpenCV 提供的 pointPolygonTest 函数。

pointPolygonTest 函数可以计算一个点到一个多边形的距离,如果点在多边形内,则距离为负数,如果点在多边形外,则距离为正数。

以下是使用 pointPolygonTest 函数判断一个点是否在多边形内的步骤:

定义多边形的顶点坐标,可以使用 std::vector<cv::Point> 来存储。

定义需要判断的点的坐标。

调用 pointPolygonTest 函数,计算点到多边形的距离。

double distance = cv::pointPolygonTest(polygon, point, true);

第一个参数是多边形的顶点坐标,第二个参数是需要判断的点的坐标,第三个参数表示是否计算最短距离,如果设置为 true,则计算最短距离,否则计算距离平方。

根据距离的正负来判断点是否在多边形内。

如果距离为负数,则表示点在多边形内,否则表示点在多边形外。

下面是一个示例代码,演示了如何使用 pointPolygonTest 函数来判断点是否在多边形内:

#include <opencv2/opencv.hpp>
int main()
    // 定义多边形的顶点坐标
    std::vector<cv::Point> polygon = {cv::Point(50, 50), cv::Point(200, 50), cv::Point(200, 200), cv::Point(50, 200)};
    // 定义需要判断的点的坐标
    cv::Point point(100, 100);
    // 计算点到多边形的距离
    double distance = cv::pointPolygonTest(polygon, point, true);
    // 判断点是否在多边形内
    if (distance < 0) {
        std::cout << "Point is inside polygon." << std::endl;
    } else {
        std::cout << "Point is outside polygon." << std::endl;
    return 0;

希望这个回答对你有帮助。

  •