检测灰度问题

时间:2015-12-24 20:09:58

标签: java image-processing ocr

我正在进行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);

1 个答案:

答案 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++;                
    }           
}