我正在进行OCR,有时我在深色背景上有一个浅色文字。当我遇到这种情况时,我需要程序知道它必须反转颜色。我写的代码并不是我想要的。它将深色检测为浅色和浅色。我有什么想法,我做错了什么?
File input = new File("/Users/unknown1/Desktop/t5.png");
BufferedImage imagegrey = ImageIO.read(input);
toGray(imagegrey);
int width = imagegrey.getWidth();
int height = imagegrey.getHeight();
int light = 0;
int dark = 0;
for(int i=0; i<height; i++){
for(int j=0; j<width; j++){
Color color = robot.getPixelColor(j, i);
int grey = ((color.getRed() + color.getBlue() + color.getGreen())/3);
//System.out.println(grey);
if (grey >= 237) {
light++;
}
else {
dark++;
}
}
}
System.out.println(light);
System.out.println(dark);
答案 0 :(得分:0)
这本身应该可以工作 - 在屏幕上的位置j i处拾取颜色。现在,如果您想要的图像覆盖了该位置是另一个问题,我们[这里]不知道该位置的内容。如果toGray()做了一些消除图像的奇怪转换。所以检查这些
for(int i=0; i<height; i++){
for(int j=0; j<width; j++){
Color color = robot.getPixelColor(j, i);
int grey = ((color.getRed() + color.getBlue() + color.getGreen())/3);
//System.out.println(grey);
if (grey >= 237) {
light++;
}
else {
dark++;
}
}