HoughCircles cannot detect circles in this image

I am trying to detect circles in my image that contain a circle of dots, but unfortunately I cannot do this. I am using opencv HoughTransform and I cannot find the parameters that make this work.

src = imread("encoded.jpg",1);
    /// Convert it to gray
    cvtColor(src, src_gray, CV_BGR2GRAY);

    vector<Vec3f> circles;

    /// Apply the Hough Transform to find the circles
    HoughCircles(src_gray, circles, CV_HOUGH_GRADIENT, 1, 10,
        100, 30, 1, 30 // change the last two parameters
        // (min_radius & max_radius) to detect larger circles

    /// Draw the circles detected
    for (size_t i = 0; i < circles.size(); i++)
        cout << "Positive" << endl;
        Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
        int radius = cvRound(circles[i][2]);
        // circle center
        circle(src, center, 3, Scalar(0, 255, 0), -1, 8, 0);
        // circle outline
        circle(src, center, radius, Scalar(0, 0, 255), 3, 8, 0);

    /// Show your results
    namedWindow("Hough Circle Transform Demo", CV_WINDOW_AUTOSIZE);
    imshow("Hough Circle Transform Demo", src_gray);


My image is here: Input Image

Why can't HoughCircles detect circles in this image? It seems to work with other simpler images like PCB.


source to share

All Articles