Повышение точности подсчета блобов с использованием opencv

Я пытаюсь обнаружить капли, используя opencv, однако моя точность не превышает 80%.

Вот изображения обнаруженных капель:

Найденные капли n = 350

Найденные капли n = 550

import cv2
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification


plt.figure(figsize=(10,5))
n_samples = 250
x, _ = make_classification(n_samples = n_samples)
plt.scatter(x[:, 0], x[:, 1], marker='o', s=14 )
plt.axis('off')
plt.savefig('sampleblobs.jpg')
plt.show()

img = cv2.imread('sampleblobs.jpg',0)

params = cv2.SimpleBlobDetector_Params()

params.filterByArea = False
params.minDistBetweenBlobs = 1
params.thresholdStep = 10;
params.minRepeatability = 2;
params.minDistBetweenBlobs = 0;

detector = cv2.SimpleBlobDetector_create(params)

keypoints = detector.detect(img)
print('Found: {}, Original: {}'.format(len(keypoints), n_samples))

# Draw detected blobs as red circles.
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures the size of the circle corresponds to the size of blob
im_with_keypoints = cv2.drawKeypoints(img, keypoints, np.array([]), (0,0,100), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# Show keypoints
cv2.imshow("Found blobs", im_with_keypoints)
cv2.imwrite("Found_blobs.jpg", im_with_keypoints)

cv2.waitKey()
cv2.destroyAllWindows()

Есть ли способ повысить точность в этом случае? Заранее спасибо!

0 ответов

Другие вопросы по тегам