你有没有尝试过使用下面这段代码?使用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_ONLY)
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(MousePosition, 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
答案 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不是很好,但代码现在做了我想要它做的事。