🎇 지난 시간에 이어서, find_ball node를 분석해 보겠습니다. 🎇
params = cv2.SimpleBlobDetector_Params()
# Change thresholds
params.minThreshold = 0
params.maxThreshold = 200
# Filter by Area.
params.filterByArea = True
params.minArea = 2000
params.maxArea = 70000 # 640 * 480 = 307,200
# Filter by Circularity
params.filterByCircularity = True
params.minCircularity = 0.1
# Filter by Convexity
params.filterByConvexity = True
params.minConvexity = 0.2
# Filter by Inertia
params.filterByInertia = True
params.minInertiaRatio = 0.7
rospy.init_node("blob_detector", anonymous=True)
ic = BlobDetector(green_min, green_max, blur, params, detection_window)
물체로 인식되기 위해서는 최소, 최대 어느정도 픽셀 면적을 가져야 하는지,
사각형 물체, 원형 물체만 인식할 것인지,
얼마나 필터에 적합해야 물체로 인식할 것인지 등의 매개변수를 설정하는 부분입니다.
각 매개변수들에 대한 자세한 설명은 레퍼런스를 남기겠습니다.
Blob Detection Using OpenCV ( Python, C++ )
이 매개변수들을, cv2.SimpleBlobDetector_create
에게 넘겨주면, 픽셀 연산을 거쳐 keypoints
(특징점)를 반환합니다. 이 특징점이 바로 우리가 추적하고자 하는 물체의 이미지상에서 위치가 되지요.
#- Apply blob detection
detector = cv2.SimpleBlobDetector_create(params)
# Reverse the mask: blobs are black on white
reversemask = 255-mask
if imshow:
cv2.imshow("Reverse Mask", reversemask)
cv2.waitKey(0)
keypoints = detector.detect(reversemask)
return keypoints, reversemask
image_blob
토픽입니다.