Я использую 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);
Может кто-нибудь объяснить, что происходит иначе, если мы используем этот флаг?