delphi手写字符识别

delphi手写字符识别
delphi手写字符识别

var

Form1: TForm1;

myNet: CNeuronet;

maxneur: integer;

implementation

{$R *.DFM}

procedure TForm1.ocrbuttons_freigeben();

begin

ButAnalyse.Enabled:=true;

ButSavLet.Enabled:=true;

ButAddLet.Enabled:=true;

LetNr.Enabled:=true;

end;

procedure TForm1.ocrbuttons_sperren();

begin

ButAnalyse.Enabled:=false;

ButSavLet.Enabled:=false;

ButAddLet.Enabled:=false;

LetNr.Enabled:=false;

end;

procedure TForm1.plainbuttons_freigeben();

begin

ImagePat.Enabled:=true;

PatNr.Enabled:=true;

ButAddPat.Enabled:=true;

ButSavPat.Enabled:=true;

end;

procedure TForm1.plainbuttons_sperren();

begin

ImagePat.Enabled:=false;

PatNr.Enabled:=false;

ButAddPat.Enabled:=false;

ButSavPat.Enabled:=false;

end;

procedure TForm1.B1ErstellenClick(Sender: TObject);

var i,rowanz:integer;

begin

GrNetSpec.Enabled:=true; GrNetSpec.Visible:=true;

GrLern.Enabled:=false;

plainbuttons_sperren; ocrbuttons_sperren;

GrOCRLearn.Visible:=false; GrOCRLearn.Visible:=false;

GrSimpleLearn.Visible:=false; GrSimpleLearn.Visible:=false;

GrError.Visible:=false;

ButSavNet.Enabled:=false; ButReset.Enabled:=false;

ImagePat.clientWidth:=250;

GrOCRTest.Visible:=false; Image.Visible:=false;

rowanz:=Rows.Value+1;

AnzGrid.RowCount:=rowanz;

AnzGrid.Cells[1,1]:=floattostr(225); AnzGrid.Cells[0,1]:='Input';

AnzGrid.Cells[1,rowanz-1]:=floattostr(26); AnzGrid.Cells[0,rowanz-1]:='Output';

for i:=2 to rowanz-2 do begin

AnzGrid.Cells[0,i]:=inttostr(i);

AnzGrid.Cells[1,i]:=floattostr(1);

end;

end;

procedure TForm1.drawnet();

begin

Image.Canvas.Pen.color:=clWhite;

Image.Canvas.Rectangle(Image.ClientRect);

myNet.calc_forward();

myNet.zeichne(Image.Canvas); {netz zeichnen}

end;

procedure TForm1.B2beginClick(Sender: TObject);

var i,rowanz,layanz:integer;

nanz: array of integer;

art: char;

begin

rowanz:=Rows.Value+1;

layanz:=rowanz-1;

if (RadioGroup1.ItemIndex=0) then begin

art:='P';

end

else begin

art:='O';

AnzGrid.Cells[1,1]:=floattostr(225);

AnzGrid.Cells[1,AnzGrid.RowCount-1]:=floattostr(26);

end;

{anz neuronen pro schicht aus dem grid auslesen }

maxneur:=0; { f黵dimension der gewichtsmatrix das maximum merken }

SetLength(nanz,layanz);

for i:=0 to layanz-1 do begin

nanz[i]:=strtoint(AnzGrid.Cells[1,i+1]); {anzahl der neuronen je schicht}

if nanz[i]>maxneur then maxneur:=nanz[i];

end;

inc(maxneur); {wegen dem bias}

myNet.Free; {evtl. vorhandenes Netz l鰏chen }

myNet:=CNeuronet.Create(layanz,nanz,art); {netz erstellen}

myNet.w.Free;

myNet.w:=Cwmatrix.Create(https://www.360docs.net/doc/1011567130.html,nz,maxneur); {gewichtsmatrix erz}

ButSavNet.Enabled:=true;

ButReset.Enabled:=true;

if (art='P') then begin { wenn plain }

GrOCRLearn.Visible:=false; GrOCRLearn.Visible:=false;

GrSimpleLearn.Visible:=true; GrSimpleLearn.Enabled:=true;

clearI(ImagePat);

Image.Visible:=true;

drawnet();

end

else if (art='O') then begin { wenn ocr }

GrOCRLearn.Visible:=true; GrOCRLearn.Enabled:=true;

GrSimpleLearn.Visible:=false; GrSimpleLearn.Enabled:=false;

GrError.Visible:=true;GrOCRTest.Visible:=true; GrOCRTest.Enabled:=true;

ClearI(ImOCRTestDraw);

ClearI(Imgezoomt);

ClearI(ImZNeur);

end;

GrNetSpec.Visible:=false; GrError.Visible:=true;

end;

procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var nr: integer;

n: ^CNeuron;

begin

nr:=0;

if ((Y>0) and (Y<20)) then begin

nr:= ( (X-10+(myNet.L[0].abst div 2)) div myNet.L[0].abst);

end;

if ((nr>0 )and (nr

n:=@myNet.L[0].N[nr];

n.activity:=1.0-n.activity;

myNet.calc_forward();

myNet.zeichne(Image.Canvas);

end; //myNet.zeichne(Image.Canvas);

end;

procedure TForm1.Akt();

begin

ErrorLabel.Caption:=floattostrf(myNet.qerror,ffFixed,7,7)+ ' finished!';

myNet.calc_forward(); myNet.zeichne(Image.Canvas);

end;

procedure TForm1.vorbereiten();

begin

myNet.stop:=false;

try

myNet.eta:=strtofloat(etaedit.Text);

except

myNet.eta:=0.2; etaedit.Text:=floattostr(0.2);

end;

try

myNet.mom:=strtofloat(momedit.Text);

except

myNet.mom:=0; momedit.Text:=floattostr(0);

end;

ErrorLabel.Caption:='calculating...'; ErrorLabel.Update;

end;

function TForm1.getnoise():double;

var noise:double;

begin

try

noise:=strtofloat(EditNoise.Text);

except

noise:=0.02;

end;

if (noise<0) then noise:=0 else if (noise>1.0) then noise:=1.0;

EditNoise.text:=floattostr(noise);

getnoise:=noise;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

vorbereiten;

myNet.lerne_schritte(Application,getsolle(),1,getnoise(),ErrorLabel,ErrorImage);

Akt();

end;

function TForm1.getsolle:double;

var solle:double;

begin

try

solle:=strtofloat(sollerror.Text);

except

solle:=0.01;

end;

getsolle:=solle;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

vorbereiten;

myNet.lerne_schritte(Application,getsolle(),10,getnoise(),ErrorLabel,ErrorImage);

Akt();

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

vorbereiten;

myNet.lerne_schritte(Application,getsolle(),100,getnoise(),ErrorLabel,ErrorImage);

Akt();

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

myNet.lerne_schritte(Application,getsolle(),1000,getnoise(),ErrorLabel,ErrorImage);

Akt();

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

vorbereiten;

myNet.lerne_schritte(Application,getsolle(),10000,getnoise(),ErrorLabel,ErrorImage);

Akt();

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

vorbereiten;

myNet.lerne_schritte(Application,getsolle(),100000,getnoise(),ErrorLabel,ErrorImage);

Akt();

end;

procedure TForm1.ImOCRLernDrawMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

zeichne:=true;

ax:=x;

ay:=y;

with ImOCRLernDraw.Canvas.Pen do begin

color:=clRed;

width:=6;

end;

end;

procedure TForm1.ImOCRLernDrawMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

zeichne:=false;

end;

procedure TForm1.ImOCRLernDrawMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

if zeichne then begin

ImOCRLernDraw.Canvas.MoveTo(ax,ay);

ImOCRLernDraw.Canvas.LineTo(x,y);

ax:=x;

ay:=y;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

zeichne:=false;

erkenne:=false;

ax:=0; ay:=0;

ButClearClick(Sender);

ButReset.Caption:='R';

end;

procedure TForm1.ButClearClick(Sender: TObject);

begin

ClearI(ImOCRLernNeur);

ClearI(ImOCRLernDraw);

ClearI(ImOCRLernZoom);

end;

procedure TForm1.ButAnalyseClick(Sender: TObject);

var sx,sy,dx,dy,x,y,nr:integer;

minx,maxx,miny,maxy,maxh,maxb,maxhb: double;

altx,alty,mittel: double;

feld: array of double;

begin

minx:=1000; maxx:=0; miny:=1000; maxy:=0;

SetLength(feld,225);

{ Grenzen im Paint-Image feststellen }

for sx:=0 to 63 do begin

for sy:=0 to 63 do begin

if (ImOCRLernDraw.Canvas.Pixels[sx,sy]=clRed) then begin

if sx < minx then minx:=sx; if sx > maxx then maxx:=sx;

if sy < miny then miny:=sy; if sy > maxy then maxy:=sy;

end;

end;

end;

{aspect-ratio beibehalten }

maxh:=maxy-miny; maxb:=maxx-minx;

if (maxh>maxb) then begin { breite < h鰄e -> maxx u minx anpassen }

maxhb:=maxh;

minx:=round( ((maxx-minx)/2+minx)-(1/2*(maxhb)));

maxx:=round( ((maxx-minx)/2+minx)+(1/2*(maxhb)));

end

else begin { h鰄e < breite -> maxy u miny anpassen }

maxhb:=maxb;

miny:=round( ((maxy-miny)/2+miny)-(1/2*(maxhb)));

maxy:=round( ((maxy-miny)/2+miny)+(1/2*(maxhb)));

end;

{ projezieren }

if ((maxy>miny) and (maxx>minx)) then begin

for dx:=0 to 63 do begin

for dy:=0 to 63 do begin

altx:=dx/64*(maxx-minx)+minx;

alty:=dy/64*(maxy-miny)+miny;

sx:=round(altx);

sy:=round(alty);

if ((sx<0) or (sx>63) or (sy<0) or (sy>63)) then

ImOCRLernZoom.Canvas.Pixels[dx,dy]:=clWhite

else

ImOCRLernZoom.Canvas.Pixels[dx,dy]:=ImOCRLernDraw.Canvas.Pixels[sx,sy];

end;

end;

end;

// neuronenbelegung durch mittelwertbildung erzeugen

for dx:=0 to 14 do begin

for dy:=0 to 14 do begin

mittel:=0;

for x:=0 to 5 do begin

for y:=0 to 5 do begin

if ImOCRLernZoom.Canvas.Pixels[2+dx*4+x,2+dy*4+y]=clRed then begin

mittel:=mittel+1;

end;

end;

end;

mittel:=mittel/36;

feld[dy*15+dx]:=mittel;

end;

end;

nr:=Letnr.Value;

{neuronenbelegung anzeigen und in Mustersatz 黚ertragen}

for dx:=0 to 14 do begin

for dy:=0 to 14 do begin

myNet.myPatterns.M[nr].input[dy*15+dx]:=feld[dy*15+dx];

ImOCRLernNeur.Canvas.brush.color:=round(myNet.myPatterns.M[nr].input[dy*15+dx]*255);

ImOCRLernNeur.Canvas.fillrect(Rect(dx*5,dy*5,dx*5+4,dy*5+4));

end;

end;

{hier noch die Muster in "myletters" zum abspeichern 黚ertragen }

if ((nr>=0) and (nr

for dx:=0 to 63 do begin

for dy:=0 to 63 do begin

if (ImOCRLernZoom.Canvas.Pixels[dx,dy]=clred) then

myNet.myLetters.B[nr].input[dy*64+dx]:=1.0

else

myNet.myLetters.B[nr].input[dy*64+dx]:=0.0;

end;

end;

myNet.myLetters.B[nr].buchst:=upcase(sollchar.text[1]);

end;

{output-neuronen auf 0 ausser eines}

for dx:=0 to myNet.L[https://www.360docs.net/doc/1011567130.html,nz-1].Nanz-2 do begin

if ( dx= (ord(myNet.myLetters.B[nr].buchst)-ord('A'))

) then myNet.myPatterns.M[nr].output[dx]:=1

else myNet.myPatterns.M[nr].output[dx]:=0;

end;

feld:=nil;

end;

procedure TForm1.ButSavPatClick(Sender: TObject);

var filename: string;

datei: file of double;

temp: double;

i,a,b: integer;

begin

if SaveDialogPat.Execute then begin

filename:=SaveDialogPat.FileName;

try

AssignFile(datei,filename);

Rewrite(datei);

temp:=myNet.myPatterns.Manz; Write(datei,temp);

temp:=myNet.myPatterns.ilen; Write(datei,temp);

temp:=myNet.myPatterns.olen; Write(datei,temp);

for i:=0 to myNet.myPatterns.Manz-1 do begin

for a:=0 to myNet.myPatterns.ilen-1 do begin

temp:=myNet.myPatterns.M[i].input[a];

Write(datei,temp);

end;

for b:=0 to myNet.myPatterns.olen-1 do begin

temp:=myNet.myPatterns.M[i].output[b];

Write(datei,temp);

end;

end;

finally

CloseFile(datei);

end;

end;

end;

procedure TForm1.ClearI(wo: TImage);

var cx,cy:integer;

begin

for cx:=0 to wo.clientwidth-1 do begin

for cy:=0 to wo.clientheight-1 do begin

wo.Canvas.Pixels[cx,cy]:=0;

end;

end;

end;

procedure TForm1.drawPatterns(welches:integer);

var x,breite,hoehe: integer;

begin

LabAnzPat.Caption:='0-'+inttostr(myNet.myPatterns.Manz-1);

breite:=round(ImagePat.clientWidth/(myNet.myPatterns.ilen+myNet.myPatterns.olen));

ImagePat.clientWidth:=breite*(myNet.myPatterns.ilen+myNet.myPatterns.olen);

hoehe:=ImagePat.clientHeight;

for x:=0 to myNet.myPatterns.ilen-1 do begin

if (myNet.myPatterns.M[welches].input[x]<0.5) then ImagePat.Canvas.brush.color:=clwhite

else ImagePat.Canvas.brush.color:=clblack;

ImagePat.Canvas.FillRect(Rect(x*breite,0,(x+1)*breite-1,hoehe));

ImagePat.Canvas.Pen.color:=clblue;

ImagePat.Canvas.MoveTo(x*breite,0);

ImagePat.Canvas.LineTo(x*breite,ImagePat.clientHeight);

end;

for x:=0 to myNet.myPatterns.olen-1 do begin

if (myNet.myPatterns.M[welches].output[x]<0.5) then ImagePat.Canvas.brush.color:=clwhite

else ImagePat.Canvas.brush.color:=clblack;

ImagePat.Canvas.FillRect(Rect((myNet.myPatterns.ilen+x)*breite,0,(myNet.myPatterns.ilen+x+1)*breite-1,hoehe ));

ImagePat.Canvas.Pen.color:=clblue;

ImagePat.Canvas.MoveTo((myNet.myPatterns.ilen+x)*breite,0);

ImagePat.Canvas.LineTo((myNet.myPatterns.ilen+x)*breite,ImagePat.clientHeight);

end;

ImagePat.Canvas.Pen.color:=clred;

ImagePat.Canvas.MoveTo(myNet.myPatterns.ilen*breite,0);

ImagePat.Canvas.LineTo(myNet.myPatterns.ilen*breite,ImagePat.clientHeight);

end;

procedure TForm1.drawletter(welches: integer);

var x,y: integer;

begin

LabAnzLet.Caption:='0-'+inttostr(myNet.myLetters.Banz-1);

for x:=0 to 63 do begin

for y:=0 to 63 do begin

ImOCRLernZoom.Canvas.Pixels[x,y]:=round(myNet.myLetters.B[welches].input[y*64+x]*255);

end;

end;

end;

procedure TForm1.ButOpenClick(Sender: TObject);

var filename: string;

datei: file of double;

temp: double;

i,a,b,Mx,Ix,Ox: integer;

iar,oar: array of double;

tm: CMusterPaar;

begin

if OpenDialogPat.Execute then begin

filename:=OpenDialogPat.FileName;

AssignFile(datei,filename);

try

Reset(datei);

Read(datei,temp); Mx:=round(temp);

Read(datei,temp); Ix:=round(temp);

Read(datei,temp); Ox:=round(temp);

if ((Ix=(myNet.L[0].Nanz-1)) and ((Ox=(myNet.L[https://www.360docs.net/doc/1011567130.html,nz-1].Nanz-1)))) then begin myNet.myPatterns.Free;

myNet.myPatterns:=CMusterSatz.Create(Mx,Ix,Ox);

SetLength(iar,Ix); SetLength(oar,Ox);

for i:=0 to Mx-1 do begin

for a:=0 to Ix-1 do begin

Read(datei,temp); iar[a]:=temp;

end;

for b:=0 to Ox-1 do begin

Read(datei,temp); oar[b]:=temp;

end;

tm:=CMusterPaar.Create(Ix,Ox,iar,oar);

myNet.myPatterns.M[i]:=@tm;

tm.free;

end;

end

else begin {muster passt nicht zum Netz}

MessageBox(0,'Illegal Patternset! Creating a new one...', 'caption',1);

myNet.myPatterns.Free;

myNet.myPatterns:=CMustersatz.Create(1,myNet.L[0].Nanz-1,myNet.L[https://www.360docs.net/doc/1011567130.html,nz-1].Nanz-1);

end;

GrLern.Enabled:=true;

plainbuttons_freigeben();

finally

CloseFile(datei);

iar:=nil; oar:=nil;

end;

PatNr.Text:=inttostr(0);

drawPatterns(0);

end;

end;

procedure TForm1.ButSavNetClick(Sender: TObject);

var

datei: file of double;

temp: double;

a,vonl,y1,y2: integer;

begin

if SaveDialogNet.Execute then begin

try

AssignFile(datei,SaveDialogNet.Filename);

Rewrite(datei);

if (myNet.art='P') then temp:=0 else temp:=1; Write(datei,temp);

temp:=https://www.360docs.net/doc/1011567130.html,nz; Write(datei,temp);

for a:=0 to https://www.360docs.net/doc/1011567130.html,nz-1 do begin

temp:=myNet.L[a].Nanz; Write(datei,temp);

end;

for vonl:=0 to https://www.360docs.net/doc/1011567130.html,nz-2 do begin

for y1:=0 to myNet.L[vonl].Nanz-1 do begin

for y2:=1 to myNet.L[vonl+1].Nanz-1 do begin

temp:=myNet.w.w[vonl,y1,y2]; Write(datei,temp);

end;

end;

end;

finally

CloseFile(datei);

end;

end;

end;

procedure TForm1.Button10Click(Sender: TObject);

var

datei: file of double;

temp: double;

maxanz,a,vonl,y1,y2,Lx: integer;

LA: array of integer;

art: char;

begin

if OpenDialogNet.Execute then begin

GrNetSpec.Enabled:=false;

GrNetSpec.Visible:=false;

GrOCRLearn.Visible:=false; GrError.Visible:=true; GrOCRTest.Visible:=false;

GrSimpleLearn.Visible:=false; Image.Visible:=false;

ocrbuttons_sperren; plainbuttons_sperren;

AssignFile(datei,OpenDialogNet.FileName);

maxanz:=0;

try

Reset(datei);

Read(datei,temp); if (temp=0) then art:='P' else art:='O';

Read(datei,temp); Lx:=round(temp);

SetLength(LA,Lx);

for a:=0 to Lx-1 do begin

Read(datei,temp); LA[a]:=round(temp-1); // -1 , weil bias wird bei layer.create automatisch addiert

if LA[a]>maxanz then maxanz:=LA[a];

end;

myNet.Free;

myNet:=CNeuroNet.Create(Lx,LA,art);

myNet.w:=Cwmatrix.Create(Lx,maxanz+1); // +1 wegen bias

for vonl:=0 to Lx-2 do begin

for y1:=0 to LA[vonl] do begin

for y2:=1 to LA[vonl+1] do begin

Read(datei,temp); myNet.w.w[vonl,y1,y2]:=temp;

end;

end;

end;

drawnet();

GrLern.Enabled:=false;

ButSavNet.Enabled:=true;

ButReset.Enabled:=true;

if ( myNet.art='P') then begin

GrSimpleLearn.Visible:=true;

GrSimpleLearn.Enabled:=true;

Image.Visible:=true;

end

else if (myNet.art='O') then begin

GrOCRLearn.Visible:=true;

GrOCRLearn.Enabled:=true;

GrOCRTest.Visible:=true;

GrError.Visible:=true;

ClearI(ImOCRTestDraw);

ClearI(Imgezoomt);

clearI(ImZNeur);

end;

finally

CloseFile(datei);

ImagePat.clientWidth:=400;

LA:=nil;

end;

end;

end;

procedure TForm1.ButAddPatClick(Sender: TObject);

begin

myNet.myPatterns.addPat();

drawpatterns(PatNr.Value);

end;

procedure TForm1.ButPatternsSetNewClick(Sender: TObject);

begin

myNet.myPatterns.Free;

myNet.myLetters.Free;

plainbuttons_freigeben();

myNet.myPatterns:=CMustersatz.Create(1,myNet.L[0].Nanz-1,myNet.L[https://www.360docs.net/doc/1011567130.html,nz-1].Nanz-1);

GrLern.Enabled:=true;

PatNr.Value:=0;

drawpatterns(0);

end;

procedure TForm1.ImagePatMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var dx: integer;

isoutput:boolean;

pm: PMusterPaar;

begin

isoutput:=false;

dx:=trunc(X /(ImagePat.clientWidth/(myNet.myPatterns.ilen+myNet.myPatterns.olen)));

if dx>=myNet.myPatterns.ilen then begin

isoutput:=true;

dec(dx,myNet.myPatterns.ilen);

end;

pm:=myNet.myPatterns.M[PatNr.Value];

if isoutput then begin

if (pm.output[dx]<0.5) then begin

pm.output[dx]:=1.0

end

else begin

pm.output[dx]:=0.0;

end

end

else begin

if (pm.input[dx]<0.5) then begin

pm.input[dx]:=1.0

end

else begin

pm.input[dx]:=0.0;

end;

end;

drawpatterns(PatNr.Value);

end;

procedure TForm1.PatNrChange(Sender: TObject);

begin

try

if (myNet.myPatterns.Manz>0) then begin

if (PatNr.Value<0) then PatNr.Value:=0

else if (PatNr.Value>=myNet.myPatterns.Manz) then PatNr.Value:=myNet.myPatterns.Manz-1;

drawPatterns(PatNr.Value);

end;

except

PatNr.Value:=0;

end;

end;

procedure TForm1.Button14Click(Sender: TObject);

begin

myNet.myPatterns.Free;

myNet.myLetters.Free;

myNet.myLetters:=CLetterSet.Create(1);

myNet.myPatterns:=CMusterSatz.Create(1,256,26);

LabAnzLet.Caption:='0-'+inttostr(myNet.myLetters.Banz-1);

GrLern.Enabled:=true;

LetNr.Value:=0;

drawletter(0);

ocrbuttons_freigeben();

end;

procedure TForm1.ButAddLetClick(Sender: TObject);

begin

myNet.myLetters.addLet();

myNet.myPatterns.addPat();

drawletter(LetNr.Value);

end;

procedure TForm1.LetNrChange(Sender: TObject);

var

nr: integer;

begin

ClearI(ImOCRLernDraw); ClearI(ImOCRLernNeur);

try

nr:=LetNr.Value;

except

nr:=0;

end;

if (myNet.myLetters.Banz>0) then begin

if (nr<0) then begin

nr:=0; LetNr.Value:=0

end

else if (nr>=myNet.myLetters.Banz) then begin

nr:=myNet.myLetters.Banz-1;

LetNr.Value:=nr;

end;

drawletter(nr);

sollchar.Text:=upcase(myNet.myLetters.B[nr].buchst);

end;

end;

procedure TForm1.ButOpeLetClick(Sender: TObject);

var datei: file of double;

temp,mittel: double;

Mx,Ix,i,a,dx,dy,x,y: integer;

iar,feld: array of double;

tL: CLetter;

sc: char;

begin

if OpenDialogOCR.Execute then begin

try

AssignFile(datei,OpenDialogOCR.FileName);

Reset(datei);

Read(datei,temp); Mx:=round(temp);

Ix:=4096;

myNet.myLetters.Free;

myNet.myPatterns.Free;

myNet.myLetters:=CLetterSet.Create(Mx);

myNet.myPatterns:=CMusterSatz.Create(Mx,225,26);

SetLength(feld,225);

SetLength(iar,4096);

for i:=0 to Mx-1 do begin

Read(datei,temp); sc:=chr(round(temp));

for a:=0 to Ix-1 do begin

Read(datei,temp); iar[a]:=temp;

end;

tL:=CLetter.Create(iar);

myNet.myLetters.B[i]:=@tL;

myNet.myLetters.B[i].buchst:=sc;

tL.free;

// in das muster f黵die neuronen eintragen

for dx:=0 to 14 do begin

for dy:=0 to 14 do begin

mittel:=0;

for x:=0 to 5 do begin

for y:=0 to 5 do begin

mittel:=mittel+myNet.myLetters.B[i].input[(2+dx*4+x)+(2+dy*4+y)*64];

end;

end;

mittel:=mittel/36;

feld[dy*15+dx]:=mittel;

end;

end;

for x:=0 to 224 do begin

myNet.myPatterns.M[i].input[x]:=feld[x];

end;

for dx:=0 to myNet.L[https://www.360docs.net/doc/1011567130.html,nz-1].Nanz-2 do begin

if (dx= (ord(myNet.myLetters.B[i].buchst)-ord('A'))

) then myNet.myPatterns.M[i].output[dx]:=1

else myNet.myPatterns.M[i].output[dx]:=0;

end;

end;

GrLern.Enabled:=true;

GrOCRTest.Visible:=true; GrError.Visible:=true;

ClearI(ImOCRTestDraw);

ClearI(Imgezoomt);

iar:=nil;

feld:=nil;

finally

Closefile(datei);

end;

ocrbuttons_freigeben();

LetNr.Text:=inttostr(0);

drawletter(0);

end;

end;

procedure TForm1.ButSavLetClick(Sender: TObject);

var datei: file of double;

i,a: integer;

temp:double;

begin

if SaveDialogOCR.Execute then begin

try

AssignFile(datei,SaveDialogOCR.FileName);

Rewrite(datei);

temp:=myNet.myLetters.Banz;

Write(datei,temp);

for i:=0 to myNet.myLetters.Banz-1 do begin

temp:=ord(myNet.myLetters.B[i].buchst); Write(datei,temp);

for a:=0 to 4095 do begin

temp:=myNet.myLetters.B[i].input[a];

Write(datei,temp);

end;

end;

finally

CloseFile(datei);

end;

end;

end;

procedure TForm1.ImOCRTestDrawMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

erkenne:=true;

ax:=x;

ay:=y;

with ImOCRTestDraw.Canvas.Pen do begin

color:=clRed;

width:=6;

end;

end;

procedure TForm1.ImOCRTestDrawMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

if erkenne then begin

ImOCRTestDraw.Canvas.MoveTo(ax,ay);

ImOCRTestDraw.Canvas.LineTo(x,y);

ax:=x;

ay:=y;

end;

end;

procedure TForm1.ImOCRTestDrawMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

erkenne:=false;

end;

procedure TForm1.Button16Click(Sender: TObject);

var zumneur: array of double;

sx,sy,maxx,maxy,maxhb,minx,miny,maxh,maxb,dx,dy,x,y:integer;

mittel,altx,alty:double;

begin

maxx:=0; minx:=1000;

maxy:=0; miny:=1000;

SetLength(zumneur,225);

//=============================================================== { Grenzen im Paint-Image feststellen }

for sx:=0 to 63 do begin

for sy:=0 to 63 do begin

if (ImOCRTestDraw.Canvas.Pixels[sx,sy]=clRed) then begin

if sx < minx then minx:=sx; if sx > maxx then maxx:=sx;

if sy < miny then miny:=sy; if sy > maxy then maxy:=sy;

end;

end;

end;

{aspect-ratio beibehalten }

maxh:=maxy-miny; maxb:=maxx-minx;

if (maxh>maxb) then begin { breite < h鰄e -> maxx u minx anpassen }

maxhb:=maxh;

minx:=round( ((maxx-minx)/2+minx)-(1/2*(maxhb)));

maxx:=round( ((maxx-minx)/2+minx)+(1/2*(maxhb)));

end

else begin { h鰄e < breite -> maxy u miny anpassen }

maxhb:=maxb;

miny:=round( ((maxy-miny)/2+miny)-(1/2*(maxhb)));

maxy:=round( ((maxy-miny)/2+miny)+(1/2*(maxhb)));

end;

{ zoomen }

if ((maxy>miny) and (maxx>minx)) then begin

for dx:=0 to 63 do begin

for dy:=0 to 63 do begin

altx:=dx/64*(maxx-minx)+minx;

alty:=dy/64*(maxy-miny)+miny;

sx:=round(altx);

sy:=round(alty);

if ((sx<0) or (sx>63) or (sy<0) or (sy>63)) then

ImGezoomt.Canvas.Pixels[dx,dy]:=clWhite

else

Imgezoomt.Canvas.Pixels[dx,dy]:=ImOCRTestDraw.Canvas.Pixels[sx,sy];

end;

end;

end;

{ auf ein Muster 6*6-Patches die sich 黚erlappen interpolieren }

{ daher auf ein Feld von 10*10 (256 Neuronen) }

for dx:=0 to 14 do begin

for dy:=0 to 14 do begin

mittel:=0;

for x:=0 to 5 do begin

for y:=0 to 5 do begin

if Imgezoomt.Canvas.Pixels[2+dx*4+x,2+dy*4+y]=clRed then begin

mittel:=mittel+1;

end;

end;

end;

mittel:=mittel/36;

zumneur[dy*15+dx]:=mittel;

end;

end;

{ zeichnen und ans netz anlegen}

for dx:=0 to 14 do begin

for dy:=0 to 14 do begin

ImZNeur.Canvas.brush.color:=round(zumneur[dy*15+dx]*255);

ImZNeur.Canvas.fillrect(Rect(dx*5,dy*5,dx*5+4,dy*5+4));

myNet.L[0].N[dy*15+dx].activity:=zumneur[dy*15+dx];

end;

end;

myNet.calc_forward();

show_ocr_result();

zumneur:=nil;

end;

procedure TForm1.ButTestClearClick(Sender: TObject);

begin

clearI(ImOCRTestDraw);

clearI(Imgezoomt);

clearI(ImZNeur);

end;

procedure TForm1.Button17Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.Button8Click(Sender: TObject);

var solle,noise: double;

begin

vorbereiten;

try

solle:=strtofloat(sollerror.Text);

except

solle:=0.01;

end;

noise:=getnoise();

myNet.lerne_bis(Application,solle,ErrorLabel,noise,ErrorImage);

Akt();

end;

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

if (RadioGroup1.ItemIndex=1) then begin

AnzGrid.Cells[1,1]:=floattostr(225);

AnzGrid.Cells[1,AnzGrid.RowCount-1]:=floattostr(26);

end;

end;

procedure TForm1.AusQuelleClick(Sender: TObject);

var

mittel:double;

zumneur: array of array of integer;

dx,dy,x,y: integer;

begin

clearI(ImOCRTestDraw);

for dx:=0 to 14 do begin

for dy:=0 to 14 do begin

mittel:=0;

for x:=0 to 5 do begin

for y:=0 to 5 do begin

if ImOCRLernZoom.Canvas.Pixels[2+dx*4+x,2+dy*4+y]=clRed then begin

mittel:=mittel+1;

end;

end;

end;

mittel:=mittel/36;

myNet.L[0].N[dy*15+dx].activity:=mittel;

end;

手写字符识别系统设计

版本:V1.0 手写字符识别系统设计说明书 湖南大学信息科学与工程学院 二0一四年六月

目录 1引言 (2) 1.1目的 (2) 1.2阅读对象 (2) 2项目概述 (2) 2.1项目简介 (2) 2.2项目任务 (2) 2.3实验环境介绍 (2) 3任务描述 (3) 3.1背景资料概述 (3) 3.2系统组成 (3) 3.3系统评估 (5) 4机器学习算法介绍 (5) 4.1支持向量机 (5) 4.2BP神经网络 (6) 4.3决策树方法 (7) 5特征选择 (8) 6参考资料和实用网站 (9)

1引言 1.1目的 随着图像处理技术与机器学习技术的发展,机器视觉技术已广泛应用于工业生产、日常生活及城市管理中。字符识别作为机器视觉的一种基本应用,在车牌识别、光学字符识别(OCR,Optical Character Recognition)等应用中均有涉及。 本说明书旨在介绍基于常用机器学习算法(如BP神经网络、支持向量机、朴素贝叶斯、K近邻分类)的手写字符识别系统的设计需求,设计方法和环境介绍,帮助学生了解字符识别的基本流程,常用机器学习算法的基本原理,掌握机器视觉应用的开发技术。 1.2阅读对象 本说明书的阅读对象有: ●数字媒体类相关专业学生 ●相关客户人员,体验用户等 2项目概述 2.1项目简介 本项目旨在基于机器学习算法实现手写字符(包括数字和大小写字母)的识别。该系统通过读入一张图片或通过鼠标绘制字符的方式,实现识别对象的输入,通过BP神经网络、支持向量机、朴素贝叶斯或K近邻分类方法实现手写字符的识别,并输出识别的结果。 2.2项目任务 项目名称:手写字符识别系统的设计 项目内容:1)手写字符的输入; 2)图片预处理与特征提取; 3)机器学习与字符分类; 项目周期:1个月(2014年8月25日——2014年9月20日) 参与人数:2~4人。 2.3实验环境介绍 A)Visual Studio 2010

英文字母书写字帖手写体

英文字母书写字帖手写 体 TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】

英语26个字母大小写标准字帖

Name(姓名): Class(班级): No.(学号): ______ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ ______ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ ______ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________

26个英文字母书写标准及描红书写字帖有笔顺也可仿写(完美打印版)

__________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________

基于知识库的手写体数字识别

HUNAN UNIVERSITY 课程模式识别 题目基于知识库的手写体数字识别学生姓名 学生学号

专业班级 学院名称 2016 年6 月25 日

基于知识库的手写体数字识别 1案例背景: 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性。由于手写数字的随意性很大,如笔画粗细、字体大小、倾斜角度等因素都有可能直接影响到字符的识别准确率,所以手写体数字识别是一个很有挑战性的课题。在过去的数十年中,研究者们提出了许多识别方法,并取得了一定的成果。在大规模数据统计如例行年检、人口普查、财务、税务、邮件分拣等应用领域都有广阔的应用前景。 本案例实现了手写阿拉伯数字的识别过程,并对手写数字识别的基于统计的方法进行了简要介绍和分析。本文实现的手写字体识别程序具有手写数字图像读取、特征提取、数字模板特征库以及识别功能。 2 理论基础: 2-1手写字体识别方法: 手写体数字识别是一个跨学科的复杂问题,综合了图像处理、模式识别、机器学习等多个领域的知识,其识别过程一般包含图像预处理、特征提取、分类器的设定及其后处理等组成。处理流程如图2-1所示。

图2-1 手写体数子识别流程图 2-2 图像预处理 手写体数字识别的首要工作是图像预处理。在图像预处理过程中需要解决的主要问题有:定位、图像二值化、平滑化(去噪)H J、字符切分、规范化等。图像二值化是指将整个图像呈现出明显的黑白效果。待识别的手写体数字图像在扫描过程中,常会带来一些噪声,用不同的扫描分辨率得到的数字图像,其质量也各不相同,故而要先将这些干扰因素排除掉。另外,还需要正确分割整幅文档图像中的手写体数字,而分割后的数字大小、字体常各不相同,故还需进行归一化处理。 2-3 特征提取 特征提取的目的是从经过预处理后的数字图像中,提取出用以区分与其它数字类别的本质属性并数值化,形成特征矢量的过程。常见的手写体数字特征有:模板特征、统计特征、结构特征和变换特征。 2-4 分类器 不同的分类方式对应不同的分类器,可选的分类器有神经网络、支持向量机

26个字母手写体临摹书写

班级_____________ 姓名______________ 班级_____________ 姓名______________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________

(完整版)手写体数字识别系统设计毕业设计

石河子大学 信息科学与技术学院毕业论文 课题名称:手写体数字识别系统设计 学生姓名: 学号: 学院:信息科学与技术学院

专业年级:电子信息工程2007级指导教师: 职称: 完成日期:二○一一年六月十一日

手写体数字识别系统设计 学生: 指导教师: [摘要] 随着科学技术的迅速发展,在邮政编码、统计报表、财务报表、银行票据等处理大量字符信息录入的场合,手写数字识别系统的应用需求越来越强烈,如何将数字方便、快速地输入到计算机中已成为关系到计算机技术普及的关键问题。本文设计实现了一个基于Matlab软件的手写体数字识别系统,采用模块化设计方法,编写了摄像头输入、直接读取图片、写字板输入三个模块,利用摄像头等工具,将以文本形式存在的手写体数字输入进计算机,完成对手写体数字图片的采集,并设计了一种手写数字识别方法,对手写体数字图像进行预处理、结构特征提取、分类识别,最终以文本形式输出数字,从而实现手写体数字的识别。 [关键词] 预处理,结构特征提取,分类识别,手写体数字识别

Handwritten Digit Recognition System Students: Teacher:

Abstract:With the rapid development of science and technology, in zip code, statistics, reports, financial statements, Bank bills dealing with a large number of characters, such as information recorded occasions, handwritten digit recognition system of requirement has become stronger and stronger, how easily and quickly the number entered in the computer has become a key issue relates to the popularization of computer technology. This article design implementation has a based on Matlab software of handwriting body digital recognition system, used module of design method, write has camera entered, and directly read pictures, and write Board entered three a module, using camera, tools, will to text form exists of handwriting body digital entered into computer, completed on handwriting body digital pictures of collection, and design has a handwriting digital recognition method, on handwriting body digital image for pretreatment, and structure features extraction, and classification recognition, eventually to text form output digital, to implementation handwriting body digital of recognition. Key words: Pretreatment, structure feature extraction, classification and recognition, handwritten digit recognition.

基于MATLAB的字符识别研究

基于MATLAB的字符识别研究 汽车牌照识别程序的设计 摘要:本次课程设计的目的是通过对基于MATLAB的字符识别的研究,以汽车牌照识别的设计为实例,详细介绍字符识别的相关原理。整个汽车牌照识别的过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,用MATLAB软件编程来实现每一个部分,最后识别出汽车牌照。在研究的同时对其中出现的问题进行了具体分析,处理。寻找出对于具体的汽车牌照识别过程的最好的方法。 关键词:MATLAB 字符识别车牌识别神经网络图像处理 引言 在MATLAB的字符识别研究中,汽车牌照的识别是最经典的样例,因为车辆牌照识别系统(License Plate Recognition System,简称LPRS)是建设智能交通系统不可或缺的部分。基于 MATLAB 图像处理的汽车牌照识别系统是通过引入数字摄像技术和计算机信息管理技术,采用先进的图像处理模式识别和人工智能技术,通过对图像的采集和处理,获得更多的信息,从而达到更高的智能化管理程度。车牌识别系统整个处理过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,用 MATLAB软件编程来实现每一个部分处理工程,最后识别出汽车牌照。 一、MATLAB及其图像处理工具概述 MATLAB 是 MATrix LABoratory (矩阵实验室)的缩写,是 Math Works 公司开发的一种功能强效率高简单易学的数学软件。MATLAB 的图像处理工具箱,功能十分强大,支持的图像文件格式丰富,如 *.BMP、*.JPG、 *.JPEG、 *.GIF、 *.TIF 、*.TIFF、 *.PNG 、*.PCX、*.XWD、 *.HDF、*.ICO 、*.CUR 等。MATLAB 7.X 提供了20 多类的图像处理函数,几乎涵盖了图像处理的所有技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。这些函数按其功能可分为:图像显示、图像文件 I/O、图像算术运算、几何变换、图像登记、像素值与统计图像分析、图像增强、线性滤波、线性二元滤波设计、图像去模糊、图像变换、邻域与块处理、灰度与二值图像的形态学运算、基于边缘的处理、色彩映射表操作色彩空间变换图像类型与类型转换。MATLAB 还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。本文将给出 MATLAB 的图像处理工具箱中的图像处理函数实现图像处理与分析的应用技术实例。 二、基于 MATLAB图像处理的汽车牌照识别系统 1.系统组成 基于 MATLAB图像处理的汽车牌照识别系统主要包括车牌定位字符车牌分割和车牌字符识别三个关键环节其识别流程图如图 1所示。 图1 识别流程图

手写体数字的识别

手写体数字识别 第一章绪论 (4) 1.1课题研究的意义 (4) 1.2国内外究动态目前水平 (4) 1.3手写体数字识别简介 (5) 1.4识别的技术难点 (5) 1.5主要研究工作 (6) 第二章手写体数字识别基本过程: (6) 2.1手写体数字识别系统结构 (6) 2.2分类器设计 (7) 2.2.1 特征空间优化设计问题 (7) 2.2.2分类器设计准则 (8) 2.2.3分类器设计基本方法 (9) 3.4 判别函数 (9) 3.5训练与学习 (10) 第三章贝叶斯方法应用于手写体数字识别 (11) 3.1贝叶斯由来 (11) 3.2贝叶斯公式 (11) 3.3贝叶斯公式Bayes决策理论: (12) 3.4贝叶斯应用于的手写体数字理论部分: (16) 3.4.1.特征描述: (16) 3.4.2最小错误分类器进行判别分类 (17) 第四章手写体数字识别的设计流程及功能的具体实现 (18) 4.1 手写体数字识别的流程图 (18) 4.2具体功能实现方法如下: (19) 结束语 (25) 致谢词 (25) 参考文献 (26) 附录 (27)

摘要 数字识别就是通过计算机用数学技术方法来研究模式的自动处理和识别。随着计算机技术的发展,人类对模式识别技术提出了更高的要求。特别是对于大量己有的印刷资料和手稿,计算机自动识别输入己成为必须研究的课题,所以数字识别在文献检索、办公自动化、邮政系统、银行票据处理等方面有着广阔的应用前景。 对手写数字进行识别,首先将汉字图像进行处理,抽取主要表达特征并将特征与数字的代码存储在计算机中,这一过程叫做“训练”。识别过程就是将输入的数字图像经处理后与计算机中的所有字进行比较,找出最相近的字就是识别结果。 本文主要介绍了数字识别的基本原理和手写的10个数字字符的识别系统的设计实现过程。第一章介绍了数字识别学科的发展状况。第二章手写体数字识别基本过程。第三章贝叶斯方法应用于手写体数字识别。第四章手写体数字识别的设计流程及功能的具体实现,并对实验结果做出简单的分析。 关键词:手写体数字识别分类器贝叶斯vc++6.0 错误!未找到引用源。

O-T英文字母书写字帖(标准手写体)

Oo-Tt英文字母书写 Name(姓名):Class(班级):No.(学号): __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ ___________ ___________ _____________ ____________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ ___________ ___________ _____________ ____________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________ __________ _____________ ___________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ ___________ ___________ _____________ ____________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ ___________ ___________ _____________ ____________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________ __________ _____________ ___________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________ __________________ __________________ ____________________ ___________________

相关文档
最新文档