python轮廓检测_python – 如何检查点是否放在轮廓内?

您可以使用OpenCV中提供的cv2.pointPolygonTest()函数.

例如:

dist = cv2.pointPolygonTest(cnt,(50,50),True)

在这个例子中,我们检查坐标(50,50)是否与轮廓cnt一起出现

> dist返回以下三种中的一种:

>如果该点位于轮廓内,则为正值

>如果该点在轮廓之外,则为负值

>如果该点在轮廓上,则为零

>在函数cv2.pointPolygonTest()中,第三个参数决定是否需要以下两个之一:

>如果为True,则dist返回点的正距离或负距离,如果它分别位于轮廓内部或外部.

>另一方面,如果设置为False,则返回1,-1或0,具体取决于位于内部,外部或轮廓上的点

有关详细信息,请参见THE DOCS

插图:

我添加了一个示例来说明它是如何工作的.我考虑了以下获得轮廓的图像:

我假设以下几点用作说明:

(50,70),(170,152),(152,48)

dist1 = cv2.pointPolygonTest(contours[0], (50, 70), True)

dist2 = cv2.pointPolygonTest(contours[0], (170, 152), True)

dist3 = cv2.pointPolygonTest(contours[0], (152, 48), True)

print('dist1 : ', dist1)

print('dist2 : ', dist2)

print('dist3 : ', dist3)

输出:

('dist1 : ', -45.17742799230607)

('dist2 : ', 49.9799959983992)

('dist3 : ', -0.0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值