我想找到图像的每个像素,然后我将得到像素值的总和,然后我会找到平均值。我将每个像素值与我得到的平均值进行比较,如果它是> 255,则像素值将变为1(表示黑色),如果< 255则将变为0(表示白色)。之后,我设置了新的RGB颜色,并绘制输出图像。 Input
根据我的概念,我认为输出图像将是黑白图像,但它只显示黑色。 Output
public class Imej {
public void mapping(BufferedImage image) throws IOException {
BufferedImage binary = new BufferedImage(image.getWidth(),
image.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
int i, j;
int w = image.getWidth();
int h = image.getHeight();
image.setRGB(i, j, new Color(pixel[i][j]).getRGB());
ImageIO.write(binary,"png",output);
}
}
这是readimage
。
public void readimage() {
BufferedImage image = null;
File f = null;
try {
image = ImageIO.read(new File(/** path **/));
//System.out.println(image);
mapping(image);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
public static void main(String[] args) {
Imej a = new Imej();
a.readimage();
}
答案 0 :(得分:1)
你应该创建一个平均函数,它返回像素的平均值。像int mean(int[][] pixels, int i, int j)
这样的东西。然后,您应该将if语句中的第一行更改为if (mean(pixel, i, j) > mean) { //...
if (pixel[i][j] > mean)
pixel[i][j]=1;
应该是
if (mean(pixel, i, j) > mean)
pixel[i][j]=0xFFFFFF;