Ich versuche ein Programm zu schreiben, das bufferedImage als Eingabe verwendet und alle Schwarzabgleich-Farben (R < 32, B < 32) zu Schwarz und die anderen zu Weiß für diesen Zweck abbildet von OCR (die OCR-Engine nimmt BufferedImage als Eingabe). Gibt es eine Möglichkeit, dies ohne Iteration über Pixel zu tun? nämlich habe ich versucht,Java BufferedImage Kartenfarben
public static BufferedImage BlackAndWhite(BufferedImage image) {
ColorModel model = new BlackWhiteColorModel(DataBuffer.TYPE_INT);
WritableRaster raster = image.getRaster();
BufferedImage newImage = new BufferedImage(model, raster, false, null);
return newImage;
}
Wo BlackWhiteColorModel als
public class BlackWhiteColorModel extends ColorModel {
public BlackWhiteColorModel(int bits) {
super(bits);
}
@Override
public int getRed(int pixel) {
int[] rgb = getRgb(pixel);
if (rgb[0] < 32 && rgb[1] < 32 && rgb[2] < 32) {
return 0;
} else {
return 255;
}
}
@Override
public int getGreen(int pixel) {
int[] rgb = getRgb(pixel);
if (rgb[0] < 32 && rgb[1] < 32 && rgb[2] < 32) {
return 0;
} else {
return 255;
}
}
@Override
public int getBlue(int pixel) {
int[] rgb = getRgb(pixel);
if (rgb[0] < 32 && rgb[1] < 32 && rgb[2] < 32) {
return 0;
} else {
return 255;
}
}
@Override
public int getAlpha(int pixel) {
return pixel;
}
private int[] getRgb(int pixel) {
int r = (pixel) & 0xFF;
int g = (pixel >> 8) & 0xFF;
int b = (pixel >> 16) & 0xFF;
int a = (pixel >> 24) & 0xFF;
return new int[]{r, g, b, a};
}
}
jedoch definiert ist, ich mit isCompatibleRasterException enden. Könnte mir jemand einen Rat geben?
Sie benötigen ein ** Black & White * * image oder ein ** GrayScale ** one? – STaefi