为了账号安全,请及时绑定邮箱和手机立即绑定

点在多边形内吗?方法有问题

点在多边形内吗?方法有问题

茅侃侃 2022-01-05 19:48:55
我在 python 中使用 TfPoseEstimator,需要知道人体的某个点是否在我用多边形分隔的区域内。我的问题是 try 块说:身体的每个部分“不起作用”。有人可以帮助我吗?def punto_en_poligono(x, y, poligono):    i = 0    j = len(poligono) - 1    salida = False    for i in range(len(poligono)):        if (poligono[i][1] < y and poligono[j][1] >= y) or (poligono[j][1] < y and poligono[i][1] >= y):            if poligono[i][0] + (y - poligono[i][1]) / (poligono[j][1] - poligono[i][1]) * (poligono[j][0] - poligono[i][0]) < x:                salida = not salida        j = i    return salida humans1 = e.inference(recto, resize_to_default=(w > 0 and h > 0), upsample_size=args.resize_out_ratio)poly1 = geometry.Polygon([[450,350],[478,0],[638,0],[638,350],[450,350]])for j in humans1:    for i in j.body_parts:        try:             pos_X = int(j.body_parts[i].x*960)                                      pos_Y = int(j.body_parts[i].y*640)              is_Inside = punto_en_poligono(pos_X,pos_Y,poly1)        except:             print("Not working")预期为真或假。实际结果:“不工作”
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

这是一个使用匀称的解决方案:


from shapely.geometry import Point

from shapely.geometry.polygon import Polygon


point0 = Point(500, 200)

point1 = Point(500, 0) 

poly1 = Polygon([[450,350],[478,0],[638,0],[638,350],[450,350]])


print(poly1.contains(point0)) #True

print(poly1.contains(point1)) #False

在您的程序中,您只需替换该行:并且您可以删除该功能 punto_en_poligono


is_Inside = poly1.contains(Point(pos_X,pos_Y)


查看完整回答
反对 回复 2022-01-05
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信