判断一个点是否在轮廓内的函数pointPolygonTest()的用法

OpenCV函数pointPolygonTest():

C++: double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)

用于判断一个点是否在轮廓中
当measureDist设置为true时,若返回值为正,表示点在轮廓内部,返回值为负,表示在轮廓外部,返回值为0,表示在轮廓上。
当measureDist设置为false时,若返回值为+1,表示点在轮廓内部,返回值为-1,表示在轮廓外部,返回值为0,表示在轮廓上。
例:

……
/// 查找轮廓
std::vector<std::vector<cv::Point> > contours; 
cv::Mat src; //src为输入图像

cv::findContours( src, contours, CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE,Point(0,
### 关于 `cv2.pointPolygonTest()` 函数的使用说明 `cv2.pointPolygonTest()` 是 OpenCV 提供的一个用于检测点与多边形之间关系的功能函数。它能够判断给定的点是否位于指定的多边形内部、外部或者正好在边界上[^1]。 #### 参数解释 该函数的主要参数如下: - **contour**: 表示输入的轮廓或多边形,通常是一个由顶点组成的数组或列表。 - **pt**: 被测试的点坐标 (x, y),表示要检查的位置。 - **measureDist**: 布尔值标志位。如果设置为 True,则返回点到最近轮廓边缘的距离;如果是 False,则仅返回位置关系标记 (-1、0 或 1)[^2]。 #### 返回值含义 当调用此方法时会得到一个浮点数作为结果: - 如果结果大于零 (>0),则表明该点处于闭合区域之内; - 结果等于零 (=0) 则意味着这个点刚好落在某条边上; - 小于零 (<0) 的情况代表其处在外面[^3]。 #### 示例代码展示 下面给出一段简单的 C++ 实现例子来演示如何利用上述功能: ```cpp #include <opencv2/opencv.hpp> #include <iostream> int main(){ std::vector<cv::Point> contour = {cv::Point(0,0), cv::Point(5,0), cv::Point(5,5), cv::Point(0,5)}; double result_inside = cv::pointPolygonTest(contour,cv::Point(3,3),false); double result_on_edge = cv::pointPolygonTest(contour,cv::Point(5,3),false); double result_outside = cv::pointPolygonTest(contour,cv::Point(6,6),false); std::cout << "Inside Test Result:" << result_inside << "\n"; std::cout << "On Edge Test Result:"<< result_on_edge<<"\n"; std::cout << "Outside Test Result:"<<result_outside<<"\n"; return 0; } ``` 以上程序定义了一个矩形轮廓并分别针对三个不同位置进行了测试打印相应的数值输出[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值