我有以下图片:
当我在MATLAB中使用霍夫变换时,我得到了100%的圆圈检测。
我在MATLAB中使用以下代码:
[centersDark, radiiDark] = imfindcircles(closed_pic,[Rmin Rmax],'ObjectPolarity','dark');
我在cpp中使用以下代码:
cv::medianBlur(mat, mat, 5);
cv::Mat grayMat;
cv::cvtColor(mat, grayMat, cv::COLOR_BGR2GRAY);
std::vector<cv::Vec3f> circles1;
cv::HoughCircles(grayMat, circles1, CV_HOUGH_GRADIENT, 1, 20, 30, 30, 0, 0);
此外,当我尝试在二进制图像上运行cpp中的hough transforn时,我没有得到任何检测。我能做些什么才能让它发挥作用?
答案 0 :(得分:0)
如果输出有意义作为霍夫圆的输入,那么看一下参数也看看输出中值模糊。你的20个参数是最小中心距离。当圆圈更近时。 Alg可能会失败。您还使用了30,30个参数,这些参数看起来像是传递给canny()边缘检测的阈值,它们是第一个和第二个阈值。同样这也是这个阈值的问题.. 如果你没有找不到参数,请使用文档中的示例并仅更新clear参数..在这个示例中,只有最后2个Min和Max半径的对象,您尝试查找...
HoughCircles(gray, circles, CV_HOUGH_GRADIENT,
2, gray->rows/4, 200, 100 );