光学字符识别(Emgu)

时间:2013-12-08 07:18:46

标签: vb.net ocr

你有没有尝试过使用下面这段代码?使用VB.net进行制作和OCR。

我遇到的问题是,当我运行程序(它运行)时,Picturebox向右移动并消失。请帮忙解决我的问题。

代码:

Imports Emgu.CV
Imports Emgu.Util
Imports Emgu.CV.OCR
Imports Emgu.CV.Structure

Public Class Form1

    Dim OCRz As Tesseract = New Tesseract("tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_ON­LY)
    Dim pic As Bitmap = New Bitmap(270, 100)
    Dim gfx As Graphics = Graphics.FromImage(pic)

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'If Windows XP

        gfx.CopyFromScreen(New Point(Me.Location.X + PictureBox1.Location.X + 4, Me.Location.Y + PictureBox1.Location.Y + 30), New Point(0, 0), pic.Size)\

        PictureBox1.Image = pic

        'If Windows 7
        'gfx.CopyFromScreen(MousePositi­on, New Point(0, 0), pic.Size)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        OCRz.Recognize(New Image(Of Bgr, Byte)(pic))
        RichTextBox1.Text = OCRz.GetText
    End Sub

End Class

3 个答案:

答案 0 :(得分:3)

在timer1_tick

中添加一行
  

gfx.CopyFromScreen(新点(Me.Location.X + PictureBox1.Location.X + 4,Me.Location.Y + PictureBox1.Location.Y + 30),新点(0,0),pic.Size )

     

PictureBox1.Image = pic

     

PictureBox1.Image = nothing

应解决您的问题

答案 1 :(得分:0)

尝试评论这两行:

gfx.CopyFromScreen(New Point(Me.Location.X + PictureBox1.Location.X + 4, Me.Location.Y + PictureBox1.Location.Y + 30), New Point(0, 0), pic.Size)
PictureBox1.Image = pic

答案 2 :(得分:0)

我使用相同的代码遇到了同样的问题。

首先,需要调整下面代码行中的偏移量以匹配表单的细节。我的代码必须增加4到8个。

gfx.CopyFromScreen(New Point(Me.Location.X + PictureBox1.Location.X + 4, Me.Location.Y + PictureBox1.Location.Y + 30), New Point(0, 0), pic.Size)

我也有一个问题(Windows 7,Visual Basic 2010 Express,因为图像无法正确刷新。 看了之后,我发现没有理由让我真正填充图片。保持透明。评论完之后,就像一个魅力。

请注意,OCR不是很好,但代码现在做了我想要它做的事。