public static void main(String[] args) throws IOException {
File original_f = new File(args[0]);
String[] parts= args[0].split("\\.");
String output_f = parts[0]+"_bin";
original = ImageIO.read(original_f);
grayscale = toGray(original);
binarized = binarize(grayscale); //Converts pixel of image in black((0,0,0)) or white( (255,255,255) )
writeImage(output_f,parts[1]);
}
private static void writeImage(String output, String part) throws IOException {
File file = new File(output+".bmp");
ImageIO.write(binarized, "bmp", file);
}
对图像进行二值化后,我得到了正确答案。二进制化的像素(代码中的变量)是(0,0,0)或(255,255,255)。
但是以jpg格式编写图像后像素不再正确,如果我用bmp格式写图像,那么像素就是正确的。
任何人都可以解释一下可能是什么原因???
答案 0 :(得分:1)
JPEG是有损图像压缩文件格式。由于有损压缩,您只是丢失了一些像素颜色值的准确度。位图是无损格式,但没有压缩。对于无损压缩,您可以使用PNG。
答案 1 :(得分:0)
如果您使用的是Sun JDK附带的JPEG编码器,那么您还必须确保将没有Alpha通道的图像传递给它。