我试图使用EmguCV C#从图像中获取一些数字,并且为了使事情变得更容易我将数字过滤并将它们转换为黑/白图像(我这样做,因为一些测试我看到它更加精确。)
图片未能识别:
和
这两个图像都没有被识别,它的数字非常清晰,不确定,但它不应该成为OCR识别它们的问题,因为它识别出比那些更难的图像。
以下是我使用的代码:
Tesseract ocr = new Tesseract(Application.StartupPath + "\\tessdata", "eng", OcrEngineMode.Default);
ocr.SetVariable("tessedit_char_whitelist", "0123456789");
ocr.PageSegMode = PageSegMode.SingleLine; //Tested with others types
Bitmap img = (Bitmap)Bitmap.FromFile(Application.StartupPath + "\\debug.png");
Image<Bgr, Byte> imgg = new Image<Bgr, byte>(img);
ocr.Recognize(imgg);
string test = ocr.GetText();
MessageBox.Show(test);
不确定是否有办法提高Emgu的OCR性能,或者我是否需要幸运。任何提示或帮助都会很棒,谢谢。
答案 0 :(得分:0)
因此,我对您的照片进行了一些播放,并设法通过以下方法使它们在Tesseract中得到认可:将它们调整为 65%,然后将其
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
public static Bitmap Resize(Bitmap bmp, int newWidth, int newHeight)
{
Image<Hsv, Byte> Iimage = new Image<Hsv, byte>(bmp);
Image<Hsv, Byte> HsvImage = Iimage.Resize(newWidth, newHeight, Inter.Linear);
return HsvImage.Bitmap;
}
public static Bitmap Threshold(Bitmap Image, byte Value)
{
Image<Gray, Byte> img = new Image<Gray, Byte>(Image);
img = img.ThresholdBinary(new Gray(Value), new Gray(255));
return img.ToBitmap();
}
我希望这会有所帮助。