我使用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...
由于
答案 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)