Hough Circle二进制图像

时间:2015-03-07 21:45:42

标签: c++ opencv image-processing hough-transform

我正在尝试创建一个总能找到我的3色球的通用函数。 (红色,黄色和白色)。我花了很多时间来搜索解决方案,这很难...... 目前,我首先使用Canny过滤器(我使用Otsu方法确定较低和较高的参数),然后通过递增param2来调用Hough Circle方法,直到找到3个圆圈。

while (!findCircles){
    Imgproc.HoughCircles(hough, circles, Imgproc.CV_HOUGH_GRADIENT, 1, 100, 200, low, 20, 100); //find3Circles = true;  
    if (circles.cols() == 3){
        findCircles = true;
    }       
    low++;
 }

效果不好......

如果有人投票支持我的问题,我可以张贴图片(我没有足够的分数......)如果有人找到解决方案,请告诉我。很高兴告诉我。

2 个答案:

答案 0 :(得分:0)

我认为你应该根据你的方法找到颜色,而不是形状,或者至少你应该找到颜色,然后找到形状。 Here有很好的(它使用旧的OpenCV API,但其他一切都很好)文章描述了如何在OpenCV中执行基于颜色的对象跟踪。一般的想法很简单 - 将图像转换为HSV颜色空间,使用inRange函数查找可能是您的对象的像素,然后跟踪它们(很可能您必须过滤像素 - 找到最接近圆形的轮廓或轮廓)。请注意,您需要调用inRange函数3次(每个球一个)。

答案 1 :(得分:0)

也许你可以尝试做this之类的事情 这里的方法是对输入图像进行阈值处理,以便仅保留红色像素,然后在结果中搜索圆圈。

你可以为你感兴趣的每种颜色做到这一点。