猿问

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

我在 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")

预期为真或假。实际结果:“不工作”


茅侃侃
浏览 91回答 1
1回答

呼如林

这是一个使用匀称的解决方案:from shapely.geometry import Pointfrom shapely.geometry.polygon import Polygonpoint0 = Point(500, 200)point1 = Point(500, 0)&nbsp;poly1 = Polygon([[450,350],[478,0],[638,0],[638,350],[450,350]])print(poly1.contains(point0)) #Trueprint(poly1.contains(point1)) #False在您的程序中,您只需替换该行:并且您可以删除该功能 punto_en_poligonois_Inside = poly1.contains(Point(pos_X,pos_Y)
随时随地看视频慕课网APP

相关分类

Python
我要回答