我跟随一个 blob 检测示例(使用 cv2.SimpleBlobDetector
),并成功地检测出了我的二进制图像中的 blob。但是我不知道如何提取关键点的坐标和面积。以下是用于 blob 检测的代码:
# 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)
因此,变量keypoints_black
包含blob(s)的信息。当我打印变量时,它看起来像这样(发现了2个blob):
KeyPoint 0x10b10b870, KeyPoint 0x10b1301b0
那么我该如何获取关键点的质心坐标和它们的面积,以便将它们作为 OSC 消息发送进行交互。
dir(keypoint)
,其中keypoint
显然是一个关键点 :) 这应该会给你一个方法列表。另外,你可以尝试tuple(keypoint)
来查看它是否可转换。 - deets