I need to get the closest point from a given point in a screen ( X,Y ), from a list.
My code is almost right:
from scipy.spatial.distance import cdist
def closest_detection(centroid,objects):
lista = []
for item in objects:
lista.append([item[5],item[6]])
if len(objects)>0:
return objects[cdist([centroid], lista)[0].argmin()]
else:
return [0,0,0,0,0,0,0]
centroid = (195,139)
list=[
[0,0,0,0,0,190,143,0,0],
[0,0,0,0,0,293,66,0,0],
[0,0,0,0,0,305,55,0,0],
[0,0,0,0,0,246,87,0,0],
[0,0,0,0,0,264,47,0,0],
[0,0,0,0,0,318,82,0,0]
]
print(closest_detection(centroid,list))
In this example in a raspberry it returned to me the list[1]
but when I try to run it in my computer alone it returned me list[0]
Is there a good way (and safer) to return the list item that is closest to my given X,Y point?
question from:
https://stackoverflow.com/questions/65845140/cdist-is-choosing-wrong-value-sometimes