Ho seguito un esempio di rilevamento BLOB (utilizzando cv2.SimpleBlobDetector
) e rilevato correttamente i BLOB nella mia immagine binaria. Ma poi non so come estrarre le coordinate e l'area dei punti chiave. Ecco il codice per le rilevazioni blob:OpenCV restituisce le coordinate e l'area dei punti chiave dal rilevamento blob, Python
# I skipped the parameter setting part.
blobParams = cv2.SimpleBlobDetector_Params()
blobVer = (cv2.__version__).split('.')
if int(blobVer[0]) < 3:
detector = cv2.SimpleBlobDetector(blobParams)
else:
detector = cv2.SimpleBlobDetector_create(blobParams)
# Detect Blobs
keypoints_black = detector.detect(255-black_blob)
trans_blobs = cv2.drawKeypoints(gray_video_crop, \
keypoints_white, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
Quindi la variabile keypoints_black
contiene le informazioni del blob (s). Quando ho stampato la variabile sembrava qualcosa di simile (2 blob sono stati trovati):
KeyPoint 0x10b10b870, KeyPoint 0x10b1301b0
Così come ottengo le coordinate del centro di massa dei punti chiave e la loro area in modo che io possa inviarli come osc messaggi per l'interazione.
Provare a stampare 'dir (keypoint)' dove 'keypoint è ovviamente un punto chiave :) Questo dovrebbe fornire un elenco di metodi. Inoltre, puoi provare a 'tupla (keypoint)' per vedere se è convertibile. – deets
Ho provato tupla (keypoint) ha restituito lo stesso, solo in tupla piuttosto che array. –
E il dir (punto chiave) ha restituito una Buch di metodi: [ '__delattr__', '__delitem__', \t \t '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', \t \t # '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', \t \t # '__ init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__ ', '__ne__', \t \t # '__ new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', \t \t # '__ setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', \t \t # 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse',]. Ma non so quale sia il prossimo –