二进制图像上的霍夫圆圈

Hough Circle on binary images

本文关键字:图像 二进制      更新时间:2023-10-16

我正在尝试创建一个通用函数,它总是能找到我的 3 个颜色球。(红色、黄色和白色)。我花了很多时间来寻找解决方案,这很难......目前,首先,我使用 Canny 过滤器(我使用 Otsu 方法来确定下限和较高参数),并通过递增param2调用 Hough 圆方法,直到找到 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++;
 }

效果不是很好...

如果有人投票支持我的问题,我可以发布图片(我没有足够的积分......拜托,如果有人找到了解决方案,告诉我会很好。

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