Java 二值化后的图像是旋转的
这是我将png图像转换为二进制图像形式的代码。虽然有时它会将一个图像转换为二进制图像形式,但有时它会将图像旋转到某个角度,然后将其转换为二进制图像形式。这里的缓冲图像是我要转换为二进制形式的输入png图像Java 二值化后的图像是旋转的,java,binary,grayscale,Java,Binary,Grayscale,这是我将png图像转换为二进制图像形式的代码。虽然有时它会将一个图像转换为二进制图像形式,但有时它会将图像旋转到某个角度,然后将其转换为二进制图像形式。这里的缓冲图像是我要转换为二进制形式的输入png图像 public static byte[][] binarizeImage(BufferedImage bfImage){ final int THRESHOLD = 160; int height = bfImage.getHeight(); i
public static byte[][] binarizeImage(BufferedImage bfImage){
final int THRESHOLD = 160;
int height = bfImage.getHeight();
int width = bfImage.getWidth();
byte[][] image = new byte[width][height];
for(int i=0; i<width; i++){
for(int j=0; j<height; j++){
Color c = new Color(bfImage.getRGB(i,j));
int red = c.getRed();
int green = c.getGreen();
int blue = c.getBlue();
if(red<THRESHOLD && green<THRESHOLD && blue<THRESHOLD){
image[i][j] = 1;
}else{
image[i][j] = 0;
}
}
}
return image;
}
有人能告诉我这个问题吗?对于一些图像,它对其他图像有效。我正在使用getrgb函数
编辑:只是提高易读性。从外观上看,您忘记了考虑图像每个像素至少有3个字节:R、G、B。那么宽度的大小不应该是*3吗?然后你会把3个不同的像素放在1或0。如果每个像素都没有足够的数据,这可能是旋转的原因。@MiltoxBeyond这不是问题。我已经试过使用它了。遗憾的是,我无法找到它发生的原因