首页 > 解决方案 > Opencv HoughCircles 在二值图像上表现不佳?

问题描述

我试图在图像中定位一些彩色球,为了减少误报的风险,我首先根据当前正在搜索的球的颜色将图像缩小为二值图像。OpenCV 的 HoughCircles 无法在二进制图像中找到任何圆圈,而在转换为灰度的原始图像上表现相当好。HoughCircles 根本不适用于二值图像吗?我还没有找到任何建议的文件。

下面是原图: 原始图像

结果圆圈: 从原始中找到(灰度)

没有找到圆圈的绿色面具: 绿色面具

标签: pythonopencvhough-transform

解决方案


输入图像应该是houghcircle : 8-bit, single-channel, and grayscale

在您的图像中,houghcircle 也能够找到该圆圈。您只需要为函数选择正确的参数即可。我尝试了这些参数并且能够找到它:

    rows = gray.shape[0]
    circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, rows / 8,
                               param1=30, param2=15,
                               minRadius=0, maxRadius=0)

注意:最好在 houghcircle 之前应用 gaussian 或 medianBlur。

结果:

在此处输入图像描述


推荐阅读