问题
After processing an image by converting it to grey scale and then blurring it, I'm trying to apply a Hough Circle Transformation with these parameters:
- CV_HOUGH_GRADIENT
- dp = 1
- min_dist = 1
- param_1 = 70
- param_2 = 100
- min_radius = 0
- max_radius = 0
Here is one of the many images I've tried: http://i.stack.imgur.com/JGRiM.jpg
But the algorithm fails to recognise the ball even with relaxed parameters.
(When I try it with an image of a circle created in GIMP it works fine)
回答1:
I agree with krzych. I had it working effortlessly with :
cv::Mat img,img2;
std::vector<cv::Vec3f> circles;
img = cv::imread("JGRiM.jpg",1);
cv::bilateralFilter(img, img2, 15, 1000, 1000);
cv::cvtColor(img2, img2,CV_BGR2GRAY);
cv::HoughCircles(img2, circles, CV_HOUGH_GRADIENT, 1,300,50, 10);
cv::circle(img2,cv::Point(circles[0][0],circles[0][1]),circles[0][2],cv::Scalar(126),2);
cv::imshow("test",img2);
cv::waitKey(0);
cv::imwrite("test.jpg",img2);
return 0;

Good luck :)
回答2:
Check Canny output of your images first. From this Canny output it is possible to detect ball with very small param_2 as well as many false circles on image. (I've used for example param_2 = 10, and with specified ball center to eliminate false circles it works)
Try to help Hough Circle Transform. The task is to segment ball from other elements. In your image problem is line, you can try to segment ball using colours for example.
来源:https://stackoverflow.com/questions/11276390/houghcircles-parameters-to-recognise-balls