我有一张图片,使用tesseract我从中找到了文字。
我以rect(left,top,right,bottom)形式的文本的边框
我想找到我尝试遍历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不等于颜色2时不要停止。增加一些公差。
计算两个RGB元组之间的欧式距离。然后检查距离是否大于某个阈值。
您也可以将RGB转换为Hue并计算两个Hue值之间的绝对差。
当然,还有更复杂,更好的解决方案,但是鉴于您对图像处理的了解,它们暂时仍无济于事。
https://stackoverflow.com/questions/36115771/