Я работаю над обнаружением капель и обработкой изображений (например, анализ гистограммы) на них. Хотя я обнаружил большие двоичные объекты с помощью OpenCV SimpleBlobDetector_create(params)
, теперь я хочу выполнить обработку / анализ изображений для каждого обнаруженного большого двоичного объекта.
После прочтения изображения в оттенках серого (и сохранения его в переменной im
) я написал следующую операцию для обнаружения капель
# Setup SimpleBlobDetector parameters.
params = cv2.SimpleBlobDetector_Params()
# Change thresholds
params.minThreshold = 10;
params.maxThreshold = 200;
# Filter by Area.
params.filterByArea = True
params.minArea = 200
# Filter by Circularity
params.filterByCircularity = True
params.minCircularity = 0.30
# Filter by Convexity
params.filterByConvexity = True
params.minConvexity = 0.5
# Filter by Inertia
params.filterByInertia = True
params.minInertiaRatio = 0.001
#now let us do blob analysis
#Set up the detector with default parameters.
detector = cv2.SimpleBlobDetector_create(params)
#Detect blobs.
keypoints = detector.detect(im)
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
Это дает следующее изображение:
Выходное изображение после обнаружения BLOB-объектов
Насколько я понимаю, cv2.SimpleBlobDetector_create(params)
выводит ключевые точки. Тип переменной каждой ключевой точки - cv2.keypoint
. Я пытался понять, какие ключевые точки взяты из здесь , но это не сильно помогло. Я был бы признателен, если бы кто-нибудь показал мне направление относительно того, как анализировать (обработка изображений, например, анализ гистограммы) область внутри ключевых точек (или, в данном случае, BLOB-объектов).