通过将图像转换为灰度然后模糊处理图像后,我正在尝试使用这些参数应用霍夫圆变换:
这是我尝试过的众多图片之一: http://i.stack.imgur.com/JGRiM.jpg
但即使参数放宽,算法也无法识别球。
(当我尝试用GIMP中创建的圆圈图像时,它可以正常工作)
答案 0 :(得分:9)
我同意krzych。 我让它毫不费力地工作:
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;
祝你好运:)
答案 1 :(得分:0)
首先检查图像的Canny输出。从这个Canny输出中,可以检测到具有非常小的param_2的球以及图像上的许多假圆。 (我用过例如param_2 = 10,并且用指定的球中心来消除它起作用的假圆圈)
尝试帮助霍夫圆变换。任务是从其他元素中分割球。在您的图像问题是线条,您可以尝试使用颜色分割球。例如。