opencv simpleblobdetector - 获取已识别blob的blob属性

时间:2016-12-08 05:51:02

标签: python opencv

我使用opencv中的simpleblobdetector和python来识别图像中的blob。

我能够让简单的斑点检测器工作,并给我确定斑点的位置。但是我还可以获得已识别blob的惯性/凸性/圆度/等属性吗?

img = cv2.imread('image.png', cv2.IMREAD_GRAYSCALE)

# set up blob detector params
detector_params = cv2.SimpleBlobDetector_Params()
detector_params.filterByInertia = True
detector_params.minInertiaRatio = 0.001
detector_params.filterByArea = True
detector_params.maxArea = 10000000
detector_params.minArea = 1000
detector_params.filterByCircularity = True
detector_params.minCircularity = 0.0001
detector_params.filterByConvexity = True
detector_params.minConvexity = 0.01

detector = cv2.SimpleBlobDetector_create(detector_params)

# Detect blobs.
keypoints = detector.detect(img)

# print properties of identified blobs
for p in keypoints:
    print(p.pt) # locations of blobs
    # circularity???
    # inertia???
    # area???
    # convexity???
    # etc...

由于

1 个答案:

答案 0 :(得分:0)

根据opencv.org,检测器返回的关键点不包含有关找到它们的算法的任何信息:

  

cv :: KeyPoint:突出点检测器的数据结构。

     

类实例存储关键点,即找到的点要素   许多可用的关键点探测器之一,如哈里斯角   detector,cv :: FAST,cv :: StarDetector,cv :: SURF,cv :: SIFT,   cv :: LDetector等。

     

关键点的特点是2D位置,比例(比例   到需要进入的邻域的直径   帐户),方向和一些其他参数。

您可以绘制关键点,显示大小和旋转:

img = cv2.drawKeypoints(img, keypoints, None, color=(0,255,0), flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)