【发布时间】:2018-09-25 06:07:19
【问题描述】:
我正在扫描一张 100x100 像素的黑白照片,尝试根据它是黑色还是白色来打印每个 x 和 y 坐标(逐个像素)。当打印语句正在运行时,我可以在控制台中看到预期的结果,但是一旦完成,它就会开始为每个结果值生成一个值 0,并且只打印 x 95 以北。你能解释一下如何解决这个问题吗?
public class BW
{
public static void main(String[] args) {
try {
BufferedImage original = ImageIO.read(new File("maze.jpg"));
int red;
int[][] outcome = new int[original.getHeight()][original.getWidth()];
for(int i=0; i<original.getHeight(); i++)
{
for(int j=0; j<original.getWidth(); j++)
{
red = new Color(original.getRGB(i, j)).getRed();
int pixel = 0;
if(red > 1)
{
outcome[i][j] = 255;
System.out.println("x: " + i + " y: " + j + " value: " + outcome[i][j]);
} else {
outcome[i][j] = 0;
System.out.println("x: " + i + " y: " + j + " value: " + outcome[i][j]);
}
}
}
} catch (IOException e) {e.printStackTrace();}
}
}
终端输出在下方(它一直持续到 x 为 99,y 为 99,y 增加 1,x 中途从 98 切换到 99 -
这是我在它仍在运行时截取的屏幕截图,您可以在其中看到它正在正确计算。完成后就变成上图了。
【问题讨论】:
-
您所说的“x 95 以北”是什么意思?
-
将
e.printStackTrace();添加到catch块,看看它是否打印任何东西。 -
@LuCio 没关系,因为数组是正方形
-
@TheScientificMethod 你是对的。 OP 说:100 x 100(因此删除了我的评论)
-
我看不到你在哪里使用变量
pixel?
标签: java for-loop image-processing multidimensional-array