scikit- DBSCAN выдает ошибку в координатных точках кластеризации (x.y)

#python #scikit-learn

#python #scikit-learn

Вопрос:

Я пытаюсь вычислить дескрипторы сфер для изображения и сгруппировать их пространственно. Я пытался использовать DBSCAN в scikit

 detector = cv2.ORB(500)
orb_kp = detector.detect(gray,None)
# compute the descriptors with ORB
kps, descs = detector.compute(gray, orb_kp)
img2 = cv2.drawKeypoints(gray,kps,color=(0,255,0), flags=0)
#extract the x,y points from the list (since kp contains various other attribs) 
pts = (p.pt for p in kps)
db = DBSCAN(eps=0.3, min_samples=5).fit(pts)
 

но я получаю эту ошибку:

float() argument must be a string or a number

итак, я попробовал: pts = (int(p.pt) for p in kps) и pts = ([int(p.pt.x),int(p.pt.y)] for p in kps) и все равно получаю ту же ошибку.

Я попытался напечатать pts на python, но получил это сообщение:

print pts
None
<generator object <genexpr> at 0x10fcab3c0>

Я не уверен, как я могу «привести» float тип для точек в int

Ответ №1:

OK публикует ответ для всех, у кого такая же проблема:

pts = (p.pt for p in kps) неверно

это должно быть: pts = [p.pt for p in kps]

Глупый я!