Java 将文本的彩色图像转换为二值图像
我正在开发和OCR。OCR应在任何其他颜色的普通背景上接受任何颜色字体的文本图片。为此,我需要将输入图像转换为二进制(1位图像) 在黑色(或黑色)背景上使用白色字体时,这非常简单。如果我的字体颜色和背景颜色对比度很高,这仍然很容易。然而,当两种颜色同时相当暗或亮时,我遇到了困难 我一直在使用此代码将彩色Java 将文本的彩色图像转换为二值图像,java,image-processing,colors,ocr,grayscale,Java,Image Processing,Colors,Ocr,Grayscale,我正在开发和OCR。OCR应在任何其他颜色的普通背景上接受任何颜色字体的文本图片。为此,我需要将输入图像转换为二进制(1位图像) 在黑色(或黑色)背景上使用白色字体时,这非常简单。如果我的字体颜色和背景颜色对比度很高,这仍然很容易。然而,当两种颜色同时相当暗或亮时,我遇到了困难 我一直在使用此代码将彩色buffereImage转换为二进制。它适用于对比色。但当两种颜色都是深色或浅色时,它就失效了 public static BufferedImage binarizeImage(Buffered
buffereImage
转换为二进制。它适用于对比色。但当两种颜色都是深色或浅色时,它就失效了
public static BufferedImage binarizeImage(BufferedImage img_param)
{
//grey
BufferedImage img_grey = new BufferedImage(img_param.getWidth(), img_param.getHeight(),
BufferedImage.TYPE_BYTE_GRAY);
Graphics g1 = img_grey.getGraphics();
g1.drawImage(img_param, 0, 0, null);
g1.dispose();
//showImageBuffer(img_grey);
//b&w
BufferedImage image = new BufferedImage(img_grey.getWidth(), img_grey.getHeight(),
BufferedImage.TYPE_BYTE_BINARY);
Graphics g2 = image.getGraphics();
g2.drawImage(img_grey, 0, 0, null);
g2.dispose();
//showImageBuffer(img_grey);
return image;
}
例如,如果我尝试对该图像进行二值化:(红色通道:255,蓝色和绿色通道:0)
我得到了一张纯黑的照片
有人能帮助我,并提示我采取更可靠的方法吗。根据上下文转换为二进制的代码
此外,我还希望在转换为二进制后,字体颜色始终为白色,背景为黑色
先谢谢你
编辑:
如果找到一个代码。这可能对某些人有用