5

因此,我试图检测图像中的所有球,但正如您所见,并非所有球都被检测到。在过去的 2 个小时里,我一直在使用这些参数,并且无法检测到更多的球。我的检测代码如下。请帮忙。我的头被炸了。在此处输入图像描述

    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);
4

1 回答 1

3

我建议您尝试使用球作为模板提取 SIFT 描述符的 SIFT 算法。是一个如何使用这种描述符进行对象检测的示例。

如果你想坚持你的精明方法,那就玩一下球的大小限制。

祝你好运。

于 2012-01-17T15:03:34.237 回答