我可以使用此代码
BufferedImage image = ImageIO.read(new File("toolbar.png"));
BufferedImage grayImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
Graphics graphics = grayImage.getGraphics();
graphics.drawImage(image, 0, 0, null);
graphics.dispose();
将BufferedImage从TYPE_3BYTE_BGR转换为TYPE_3BYTE_BGR。
例如,输入:
输出:
我知道基于计算规则将彩色像素变成白色像素或黑色像素。它是什么,我该怎么做才能调整它?感谢您的帮助。
答案 0 :(得分:1)
上面代码中的转换是一种隐式转换,因为输入图像(RGB)具有更多的目标颜色(二进制索引颜色)。
这种转换为二进制颜色的“规则”可以简单地描述为“选择目的地中最接近输入颜色的颜色”。由于您唯一的颜色是黑色和白色,所有平均R,G和B小于50%的颜色将变为黑色,其余颜色为白色。没有办法直接“调整”这个。
但是,您可以直接控制阈值或从输入计算阈值,以获得更好的图像。有关示例,请参阅示例this blog。