在OCR

时间:2016-03-20 15:36:20

标签: android opencv image-processing ocr tesseract

我有一个图像并使用tesseract我正在从中找到文本。 我有一个矩形(左,上,右,下)形式的文本边界框

我想找到我试图遍历2D边界框矩阵的文本的字体颜色,我将背景颜色与边界框中的每个颜色像素进行比较。无论我在哪里获得除背景颜色以外的颜色,我都会返回颜色,即颜色。

//rectArrayList is an array list of rect for a line in the image 

for(int i=rectArrayList.get(0).left;i<rectArrayList.get(0).right ;i++){
        for(int j=rectArrayList.get(0).top;j<rectArrayList.get(0).bottom;j++){

            pixel=colorbit.getPixel(i,j);
            R = (pixel & 0xff0000) >> 16; //channel the pixel in RGB values
            G = (pixel & 0xff00) >> 8;
            B = pixel & 0xff;

//backColour is the background colour of the image 
            if(backColour!=Color.rgb(R,G,B)){ 
                return Color.rgb(R,G,B);
            }

        }

让我们说背景颜色是黄色的阴影。但是在遍历矩阵时,我会得到一个不同的黄色阴影,它是字体颜色背后的背景颜色,而不是字体颜色。所以我的字体颜色错了。

我知道这种技术会失败,因为图像的背景颜色会因亮度等而具有不同色调的相同颜色。

如何从图像中获取准确的字体颜色?

1 个答案:

答案 0 :(得分:1)

我可以为你提供许多不同的解决方案。这里有一些简单的事情:

当颜色1的颜色不相等时,不要停止2.添加一些公差。 计算两个RGB元组之间的欧几里德距离。然后检查距离是否大于某个阈值。 您还可以将RGB转换为Hue并计算两个Hue值之间的绝对差值。

当然有更复杂和更好的解决方案,但鉴于您对图像处理的了解,它们暂时无法帮助您。