1
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 格式写入图像,则像素是正确的。

谁能解释一下可能是什么原因???

4

2 回答 2

1

JPEG 是有损图像压缩文件格式。由于有损压缩,您只是失去了一些像素颜色值的准确性。位图是无损格式,但没有压缩。对于无损压缩,您可以使用 PNG。

于 2013-06-08T10:23:23.937 回答
0

如果您使用 Sun JDK 附带的 JPEG 编码器,那么您还必须确保向其传递没有 alpha 通道的图像。

于 2013-06-08T10:21:36.173 回答