1

该程序应检测圆圈并将其涂成红色。建议使用对称方法,我假设每个像素都是圆心并检查四个点 r (半径)距它的距离。如果它们相同,请画一个圆圈。但是在下面的代码中,我遇到了许多不必要的圈子

static boolean isCenterOfCircle(int row, int col, int r, BufferedImage image) {

            //getPixels gets the color of the current pixel. 
        if(getPixel(row,col,image) == getPixel(row+r,col,image)
             || getPixel(row,col,image) == getPixel(row-r,col,image)
                || getPixel(row,col,image) == getPixel(row,col+r,image)
                    || getPixel(row,col,image) == getPixel(row,col-r,image)){
            return true;
        }else{
        return false;
        }
    }
4

2 回答 2

2

这可以使用圆的霍夫变换来完成。

请参阅用于检测图像中的圆圈的算法

于 2013-01-27T20:07:44.503 回答
0

您应该检查 4 个以上的点来检测圆。16个或更多呢。也许取决于半径。对于更大的半径,您应该检查更多点。

或者在网上搜索圆形检测算法。除了检查几个像素之外,还有其他方法。

于 2013-01-27T20:07:33.983 回答