python - tutorial - momentos en opencv
OpenCV devuelve coordenadas de puntos clave y área desde la detección de blobs, Python (2)
La propiedad pt
:
keypoints = detector.detect(frame) #list of blobs keypoints
x = keypoints[i].pt[0] #i is the index of the blob you want to get the position
y = keypoints[i].pt[1]
Seguí un ejemplo de detección de blobs (usando cv2.SimpleBlobDetector
) y detecté con éxito los blobs en mi imagen binaria. Pero entonces no sé cómo extraer las coordenadas y el área de los puntos clave. Aquí está el código para las detecciones de blobs:
# 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)
Entonces, la variable keypoints_black
contiene la información de la (s) burbuja (s). Cuando imprimí la variable se veía algo como esto (se encontraron 2 blobs):
KeyPoint 0x10b10b870, KeyPoint 0x10b1301b0
Entonces, ¿cómo obtener las coordenadas del centro de masa de los puntos clave y su área para que pueda enviarlos como mensajes osc para la interacción.
Si tiene una lista de puntos clave. Luego puede imprimir como se muestra a continuación
for keyPoint in keyPoints:
x = keyPoint.pt[0]
y = keyPoint.pt[1]
s = keyPoint.size
Editar: El tamaño determina el diámetro del vecindario con punto clave significativo. Puede usar ese tamaño y calcular aproximadamente el área del blob.