我正在尝试创建一个程序,该程序将检测一条蓝线并将其上的所有像素涂黑,但不能将其下的所有像素涂黑。请参阅以下方法:

public static void findBlueLine(Picture p) {
Pixel[][] pixels = p.getPixels2D();
    for(int y = 0; y < p.getHeight(); y++) {
        for (int x = 0; x < p.getWidth(); x++) {
            if (isBlueLine(pixels[y][x])) {
                pixels[y][x].setColor(Color.BLACK);
                //for(int m = y; m < p.getHeight(); m++) {
                    //pixels[m][x].setColor(Color.BLACK);
                //}
            }
        }
    }
}

最佳答案

我假设您的屏幕上只有一条蓝线。这条蓝线可以在任何角度,并且可以在任何坐标处开始和结束。我假设该行不在屏幕上。

此代码应适用于所有行。

public static void findBlueLine(Picture p) {
    Pixel[][] pixels = p.getPixels2D();
    Bool aboveLine = false;

    for (int x = 0; x < p.getWidth(); x++) {
        aboveLine = false;

        for(int y = p.getHeight-1; 0 <= y ; y--) {
            if(aboveLine == true) {
                pixels[y][x].setColor(Color.BLACK);
            }

            if (isBlueLine(pixels[y][x])) {
                aboveLine = true;
            }
        }

    }
}

关于java - 如何从底部开始遍历图像中的所有像素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59381162/

10-10 11:04