几百烟钱请朋友们做一个简单图像识别的小程序解决方案
几百烟钱请朋友们做一个简单图像识别的小程序
纯数字的图像,没太多干扰,,几百元的烟钱当交个朋友
有时间的朋友请加QQ:154868407
------解决方案--------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
const
HZAll=0; //所有汉字
HZAll_Digit=1; //所有汉字,数字优先
HZAll_Character=2; //所有汉字,英文字母优先
HZAll_Digit_Character=3; //所有汉字,数字、英文字母优先
HZDigit=4; //仅数字
HZCharacter=5; //仅字符
HZDigit_Character=6; //仅数字和英文字母
MaxSuspect=15;
type
TResult = record
Chinese: array[0..3] of char;
Precision: word;
CountSuspect: word;
ChineseSuspect: array[0..MaxSuspect*2+1] of char;
PrecisionSuspect: array[0..MaxSuspect] of word;
Rect: TRect;
end;
PResult=^TResult;
TOCRResult=packed record
Count:integer;
Result:array[0..1]of TResult;
end;
POCRResult=^TOCRResult;
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Image1: TImage;
Panel1: TPanel;
Button1: TButton;
TabSheet2: TTabSheet;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function ZWOcrInit:bool;stdcall;external 'ZWOCRdll.dll';
function ZWOcrStart(Hbitmap:HBitmap;rRect:PRect;bAssociate:BOOL;iHZtype:integer;var pOCRResult:pointer):BOOL;stdcall;external 'ZWOCRdll.dll';
procedure ZWOcrStop;stdcall;external 'ZWOCRdll.dll';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
p:POCRResult;
i:integer;
s:string;
// r:trect;
begin
{ r.left:=156;
r.Right:=507;
r.Top:=40;
r.Bottom:=100; }
if ZWOcrStart(image1.Picture.Bitmap.Handle,nil,true,HZAll_Digit,pointer(p)) then
begin
memo1.Lines.Clear;
for i:=0 to p^.Count-1 do
with p.Result[i] do
begin
setlength(s,CountSuspect*2);
move(ChineseSuspect[0],s[1],CountSuspect*2);
memo1.Lines.Add(format('%-4s 相似度:%3d%% Left:%-4d Right:%-4d Top:%-4d Bottom:%-4d 候选字:%s',[string(Chinese),Precision,
Rect.left,Rect.right,Rect.top,Rect.bottom, s]));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
image1.Picture.LoadFromFile(extractfilepath(paramstr(0))+'test.bmp');
if not ZWOcrInit then
showmessage('初始化dll出错,请检查使用许可是否过期或与作者联系.');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
p:POCRResult;
i:integer;
s:string;
r:trect;
begin
r.left:=156;
r.Right:=507;
r.Top:=40;
r.Bottom:=100;
if ZWOcrStart(image1.Picture.Bitmap.Handle,@r,true,HZAll_Digit,pointer(p)) then
begin
memo1.Lines.Clear;
for i:=0 to p^.Count-1 do
纯数字的图像,没太多干扰,,几百元的烟钱当交个朋友
有时间的朋友请加QQ:154868407
------解决方案--------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
const
HZAll=0; //所有汉字
HZAll_Digit=1; //所有汉字,数字优先
HZAll_Character=2; //所有汉字,英文字母优先
HZAll_Digit_Character=3; //所有汉字,数字、英文字母优先
HZDigit=4; //仅数字
HZCharacter=5; //仅字符
HZDigit_Character=6; //仅数字和英文字母
MaxSuspect=15;
type
TResult = record
Chinese: array[0..3] of char;
Precision: word;
CountSuspect: word;
ChineseSuspect: array[0..MaxSuspect*2+1] of char;
PrecisionSuspect: array[0..MaxSuspect] of word;
Rect: TRect;
end;
PResult=^TResult;
TOCRResult=packed record
Count:integer;
Result:array[0..1]of TResult;
end;
POCRResult=^TOCRResult;
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Image1: TImage;
Panel1: TPanel;
Button1: TButton;
TabSheet2: TTabSheet;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function ZWOcrInit:bool;stdcall;external 'ZWOCRdll.dll';
function ZWOcrStart(Hbitmap:HBitmap;rRect:PRect;bAssociate:BOOL;iHZtype:integer;var pOCRResult:pointer):BOOL;stdcall;external 'ZWOCRdll.dll';
procedure ZWOcrStop;stdcall;external 'ZWOCRdll.dll';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
p:POCRResult;
i:integer;
s:string;
// r:trect;
begin
{ r.left:=156;
r.Right:=507;
r.Top:=40;
r.Bottom:=100; }
if ZWOcrStart(image1.Picture.Bitmap.Handle,nil,true,HZAll_Digit,pointer(p)) then
begin
memo1.Lines.Clear;
for i:=0 to p^.Count-1 do
with p.Result[i] do
begin
setlength(s,CountSuspect*2);
move(ChineseSuspect[0],s[1],CountSuspect*2);
memo1.Lines.Add(format('%-4s 相似度:%3d%% Left:%-4d Right:%-4d Top:%-4d Bottom:%-4d 候选字:%s',[string(Chinese),Precision,
Rect.left,Rect.right,Rect.top,Rect.bottom, s]));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
image1.Picture.LoadFromFile(extractfilepath(paramstr(0))+'test.bmp');
if not ZWOcrInit then
showmessage('初始化dll出错,请检查使用许可是否过期或与作者联系.');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
p:POCRResult;
i:integer;
s:string;
r:trect;
begin
r.left:=156;
r.Right:=507;
r.Top:=40;
r.Bottom:=100;
if ZWOcrStart(image1.Picture.Bitmap.Handle,@r,true,HZAll_Digit,pointer(p)) then
begin
memo1.Lines.Clear;
for i:=0 to p^.Count-1 do