使用OpenCV在图像中检测多个彩色圆形

5

我试图检测如图中的所有球,但是你可以看到并未检测到全部。我已经尝试调整参数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);

2
可能是重复的问题。http://stackoverflow.com/questions/7717010/not-detecting-multiple-circles-in-image - Adrian
1
还有一个。http://stackoverflow.com/questions/7734377/cv-hough-circle-parameters-to-detect-circles - Adrian
1个回答

3
我建议您尝试使用球作为模板来提取SIFT描述符的SIFT算法。 这里 是一个使用此类描述符进行物体检测的示例。
如果您想坚持使用Canny方法,则可以尝试调整球大小限制。
祝好运。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接