EmguCv Ocr在简单图像上失败

时间:2015-11-19 23:03:29

标签: c# image ocr emgucv

我试图使用EmguCV C#从图像中获取一些数字,并且为了使事情变得更容易我将数字过滤并将它们转换为黑/白图像(我这样做,因为一些测试我看到它更加精确。)

图片未能识别:

modify app.yaml

First image

这两个图像都没有被识别,它的数字非常清晰,不确定,但它不应该成为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性能,或者我是否需要幸运。任何提示或帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:0)

因此,我对您的照片进行了一些播放,并设法通过以下方法使它们在Tesseract中得到认可:将它们调整为 65%,然后将其拼凑成它们具有 80 值。

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();
}

我希望这会有所帮助。