обнаружение многочисленных цветных кругов на изображении с помощью opencv - PullRequest
5 голосов
/ 10 ноября 2011

Так что я пытаюсь обнаружить все шары, как на картинке, но, как вы видите, не все обнаруживаются. Я играл с параметрами в течение последних 2 часов и больше не могу обнаружить шары. мой код обнаружения ниже. пожалуйста помоги. моя голова жареная. enter image description here

    IplImage* gray = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);

    CvMemStorage* storage = cvCreateMemStorage(0);

    //covert to grayscale
    cvCvtColor(img, gray, CV_BGR2GRAY);

    // This is done so as to prevent a lot of false circles from being detected
    cvSmooth(gray, gray, CV_GAUSSIAN, 5, 5);

    IplImage* canny = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);


    //detect circles
    CvSeq* circles = cvHoughCircles(canny, storage, CV_HOUGH_GRADIENT, 1, 27.0, 80, 64,0,0);

1 Ответ

3 голосов
/ 17 января 2012

Я предлагаю вам попробовать алгоритм SIFT, используя шарик в качестве шаблона для извлечения дескрипторов SIFT. Здесь - пример того, как выполнить обнаружение объектов с помощью дескрипторов этого типа.

Если вы хотите придерживаться своего хитрого подхода, поиграйте с ограничением размера шара.

Удачи.

...