Как используется флаг CALIB_CB_CLUSTERING в функции findCirclesGrid в OpenCV? - PullRequest
0 голосов
/ 14 мая 2019

Я использую openCV findCirclesGrid () , чтобы найти сетку асимметричных окружностей на изображении, сделанном камерой высокого разрешения.

Я попытался изменить параметры SimpleBlobDetector на: - blobParms.filterByInertia = false; - blobParms.minArea = 2500; - blobParms.maxArea = 50000; функция не смогла обнаружить круги.

SimpleBlobDetector::Params blobParms;
blobParms.filterByInertia = false;
blobParms.minArea = 2500;
blobParms.maxArea = 50000;
Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(blobParms);

CirclesGridFinderParameters parms;

findCirclesGrid(inputImageGray, gridSize, foundCircleCenters, CALIB_CB_ASYMMETRIC_GRID , detector, parms);

Но когда я добавил флаг CALIB_CB_CLUSTERING , функция успешно смогла обнаружить сетку!

SimpleBlobDetector::Params blobParms;
blobParms.filterByInertia = false;
blobParms.minArea = 2500;
blobParms.maxArea = 50000;
Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(blobParms);

CirclesGridFinderParameters parms;

findCirclesGrid(inputImageGray, gridSize, foundCircleCenters, CALIB_CB_ASYMMETRIC_GRID + CALIB_CB_CLUSTERING, detector, parms);

Может кто-нибудь объяснить, что происходит иначе, если мы используем этот флаг?

...