java手写识别源代码.doc_第1页
java手写识别源代码.doc_第2页
java手写识别源代码.doc_第3页
java手写识别源代码.doc_第4页
java手写识别源代码.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品java手写识别源代码1. /*2. *(#)HandWritingRecognition.java1.004/04/033. *4. *Youcanmodifythetemplateofthisfileinthe5. *directory.JCreatorTemplatesTemplate_1Project_Name.java6. *7. *Youcanalsocreateyourownprojecttemplatebymakinganew8. *folderinthedirectory.JCreatorTemplate.Usetheother9. *templatesasexamples.10. *11. */12. packagemyprojects.handwritingrecognition;13.14. importjava.awt.*;15. importjava.awt.event.*;16. importjavax.swing.*;17. importjava.lang.*;18. importjava.io.*;19.20. classHandWritingRecognitionextendsJFrameimplementsActionListener,ItemListener21. JButtonrecognize;22. JButtontrain;23. JButtonclear;24. JButtonnewSample;25. JLabelresult1;26. JTextArearesult2;27. JButtonchoice1;28. JButtonchoice2;29. JTextAreastatus;30. JComboBoxnum;31. myCanvascan;32. intmodel;33. FileDialogfdsave;34. FileDialogfdload;35. BufferedWriterout;36. FileWriterfile_writer;37. BufferedReaderin;38. FileReaderfile_reader;39. JMenuItemsave;40. JMenuItemload;41. JMenuItemquit;42. JMenuItemab;43. JMenuItemedition;44. JTextAreaarea;45. intfirst,second;46. intchoice;47. intresultLen=10;48. intsnum=10;49. 50. intsample;51. intinput;52. introw;53. intcount;54. intstroke;55. intx;56. inty;57. intdismantle;58. intcol;59. intsample2;60. intd1,d2;61. booleanisSaved;62.63. publicHandWritingRecognition()64. sample=newint1012;65. sample2=newint108;66. input=newint128;67. row=newint12;68. count=0;69. stroke=0;70. x=newint500;71. y=newint500;72. model=0;73. dismantle=newint10;74. col=newint8;75. d1=d2=0;76. isSaved=true;77. 78. fdsave=newFileDialog(this,保存文件,FileDialog.SAVE);79. fdload=newFileDialog(this,打开文件,FileDialog.LOAD);80. setSize(470,520);81. setLocation(300,100);82. setTitle(数字手写识别器);83. 84. JMenuBarBar=newJMenuBar();85. Bar.setOpaque(true);86. JMenufile=newJMenu(文件);87. JMenuabout=newJMenu(关于);88. Bar.add(file);89. Bar.add(about);90. setJMenuBar(Bar);91. save=newJMenuItem(保存样本);92. load=newJMenuItem(读取样本);93. quit=newJMenuItem(退出);94. file.add(save);95. file.add(load);96. file.addSeparator();97. file.add(quit);98. ab=newJMenuItem(说明);99. edition=newJMenuItem(版本);100. about.add(ab);101. about.addSeparator();102. about.add(edition);103. save.addActionListener(this);104. load.addActionListener(this);105. quit.addActionListener(this);106. ab.addActionListener(this);107. edition.addActionListener(this);108. 109. can=newmyCanvas();110. 111. Containercon=getContentPane();112. con.setLayout(null);113. 114. JPanelp1=newJPanel();115. p1.setLayout(null);116. p1.add(can);117. can.setBounds(15,15,270,270);118. p1.setBorder(BorderFactory.createTitledBorder(手写数字输入板);119. con.add(p1);120. p1.setBounds(20,60,300,300);121. 122. recognize=newJButton(识别);123. clear=newJButton(清除);124. newSample=newJButton(新建样本);125. train=newJButton(训练);126. choice1=newJButton();127. choice2=newJButton();128. con.add(recognize);129. recognize.setBounds(340,70,80,30);130. con.add(clear);131. clear.setBounds(340,120,80,30);132. con.add(newSample);133. newSample.setBounds(20,15,90,30);134. con.add(train);135. train.setBounds(340,170,80,30);136. Strings=0,1,2,3,4,5,6,7,8,9;137. num=newJComboBox(s);138. JPanelp4=newJPanel();139. con.add(p4);140. p4.setLayout(null);141. p4.setBounds(340,210,80,50);142. p4.setBorder(BorderFactory.createTitledBorder(训练项);143. p4.add(num);144. num.setBounds(10,15,55,25);145. 146. JPanelp2=newJPanel();147. con.add(p2);148. p2.setLayout(null);149. p2.setBounds(340,260,80,100);150. p2.setBorder(BorderFactory.createTitledBorder(结果备选);151. p2.add(choice1);152. p2.add(choice2);153. choice1.setBounds(10,20,60,30);154. choice2.setBounds(10,60,60,30);155. 156. result1=newJLabel(识别结果:);157. result2=newJTextArea();158. result2.setEditable(false);159. con.add(result1);160. con.add(result2);161. result1.setBounds(150,15,70,30);162. result2.setBounds(230,15,170,30);163. 164. JPanelp3=newJPanel();165. con.add(p3);166. p3.setLayout(null);167. p3.setBounds(20,370,400,70);168. p3.setBorder(BorderFactory.createTitledBorder(STATE:);169. area=newJTextArea();170. p3.add(area);171. area.setBounds(10,15,380,45);172. area.setEditable(false);173. 174. recognize.setEnabled(false);175. choice1.setEnabled(false);176. choice2.setEnabled(false);177. train.setEnabled(false);178. num.setEnabled(false);179. clear.setEnabled(false);180. area.setText(请新建或载入手写体样本。);181.182. recognize.addActionListener(this);183. clear.addActionListener(this);184. train.addActionListener(this);185. newSample.addActionListener(this);186. choice1.addActionListener(this);187. choice2.addActionListener(this);188. num.addActionListener(this);189. 190. 191. 192. addWindowListener(newWindowAdapter()193. publicvoidwindowClosing(WindowEvente)194. 195. if(isSaved=false)196. Strings=是否要保存已修改的样本到样本文件?;197. Stringt=提示;198. intcheck;199. JFramef=newJFrame();200. check=JOptionPane.showConfirmDialog(f,s,t,0);201. if(check=0)202. fdsave.setVisible(true);203. try204. if(fdsave.getFile()!=null)205. Filefile=newFile(fdsave.getDirectory(),fdsave.getFile();206. file_writer=newFileWriter(file);207. out=newBufferedWriter(file_writer);208. for(inti=0;i10;i+)209. for(intj=0;j12;j+)210. Integeraa=newInteger(int)sampleij);211. s=aa.toString();212. out.write(s,0,s.length();213. out.flush();214. out.newLine();215. 216. for(intj=0;j8;j+)217. Integeraa=newInteger(int)sample2ij);218. s=aa.toString();219. out.write(s,0,s.length();220. out.flush();221. out.newLine();222. 223. 224. out.close();225. file_writer.close();226. 227. catch(FileNotFoundExceptione1)228. catch(IOExceptione2)229. 230. isSaved=true;231. 232. dispose();233. System.exit(0);234. 235. );236.237. setVisible(true);238. show();239. 240.241. publicvoidstandard()242. intminx,miny,maxx,maxy,xlen,ylen;243. minx=miny=1000;244. xlen=ylen=0;245. maxx=maxy=0;246. for(inti=0;icount;i+)247. if(xi=-1)248. continue;249. 250. if(ximinx)251. minx=xi;252. 253. if(yimaxx)257. maxx=xi;258. 259. if(yimaxy)260. maxy=yi;261. 262. 263. System.out.println(maxx+maxy+minx+miny);264. xlen=maxx-minx;265. ylen=maxy-miny;266. inttempi,tempj;267. for(inti=0;i11)tempi=11;274. if(tempj7)tempj=7;275. if(tempi0)tempi=0;276. if(tempj0)tempj=0;277. inputtempitempj=1;278. 279. for(inti=0;i12;i+)280. intc=0;281. for(intj=0;j8;j+)282. if(inputij=1)283. rowi+=j;284. c+;285. 286. 287. rowi*=c;288. 289. for(inti=0;i8;i+)290. intc=0;291. for(intj=0;j12;j+)292. if(inputji=1)293. coli+=j;294. c+;295. 296. 297. coli*=c;298. 299. 300. for(inti=0;i12;i+)301. for(intj=0;j8;j+)302. System.out.print(inputij+);303. 304. System.out.print(+rowi+n);305. 306. for(inti=0;i8;i+)307. System.out.print(coli+);308. 309. System.out.println();310. 311. 312.313. publicvoidactionPerformed(ActionEvente)314. if(e.getSource()=quit)315. 316. 317. if(isSaved=false)318. Strings=是否要保存以修改的样本到样本文件?;319. Stringt=提示;320. intcheck;321. JFramef=newJFrame();322. check=JOptionPane.showConfirmDialog(f,s,t,0);323. if(check=0)324. fdsave.setVisible(true);325. try326. if(fdsave.getFile()!=null)327. Filefile=newFile(fdsave.getDirectory(),fdsave.getFile();328. file_writer=newFileWriter(file);329. out=newBufferedWriter(file_writer);330. for(inti=0;i10;i+)331. for(intj=0;j12;j+)332. Integeraa=newInteger(int)sampleij);333. s=aa.toString();334. out.write(s,0,s.length();335. out.flush();336. out.newLine();337. 338. for(intj=0;j8;j+)339. Integeraa=newInteger(int)sample2ij);340. s=aa.toString();341. out.write(s,0,s.length();342. out.flush();343. out.newLine();344. 345. 346. out.close();347. file_writer.close();348. 349. catch(FileNotFoundExceptione1)350. catch(IOExceptione2)351. 352. isSaved=true;353. 354. 355. System.exit(0);356. 357. 358. if(e.getSource()=recognize)359. standard();360. for(inti=0;i10;i+)361. for(intj=0;j12;j+)362. dismantlei+=Math.abs(sampleij-rowj);363. 364. for(intj=0;j8;j+)365. dismantlei+=Math.abs(sample2ij-colj);366. 367. System.out.print(dismantlei+);368. 369. 370. 371. first=second=0;372. for(inti=0;i10;i+)373. if(dismantleidismantlefirst)374. first=i;375. 376. 377. if(first=0)second=1;378. for(inti=0;i10;i+)379. if(i=first)continue;380. if(dismantleidismantlesecond)381. second=i;382. 383. 384. for(intj=0;j12;j+)385. d1+=samplefirstj-rowj;386. 387. for(intj=0;j8;j+)388. d1+=sample2firstj-colj;389. 390. for(intj=0;j12;j+)391. d2+=samplesecondj-rowj;392. 393. for(intj=0;j8;j+)394. d2+=sample2secondj-colj;395. 396. for(inti=0;i12;i+)397. rowi=0;398. 399. for(inti=0;i8;i+)400. coli=0;401. 402. choice1.setLabel(I:+first);403. choice2.setLabel(II:+second);404. 405. System.out.print(d1+d2);406. d1=d2=0;407. 408. if(e.getSource()=choice1)409. /*for(inti=0;i12;i+)410. samplefirsti=(rowi-samplefirsti)/5+samplefirsti;411. 412. for(inti=0;i8;i+)413. sample2firsti=(coli-sample2firsti)/5+sample2firsti;414. */415. resultLen-;416. if(resultLen=0)417. resultLen=10;418. result2.setText();419. 420. isSaved=false;421. Integeri=newInteger(first);422. result2.append(i.toString();423. 424. if(e.getSource()=choice2)425. for(inti=0;i12;i+)426. samplesecondi=(rowi-samplesecondi)/5+samplesecondi;427. 428. for(inti=0;i8;i+)429. sample2secondi=(coli-sample2secondi)/5+sample2secondi;430. 431. isSaved=false;432. resultLen-;433. if(resultLen=0)434. resultLen=10;435. result2.setText();436. 437. Integeri=newInteger(second);438. result2.append(i.toString();439. 440. if(e.getSource()=clear)441. input=newint128;442. row=newint12;443. count=0;444. stroke=0;445. x=newint500;446. y=newint500;447. dismantle=newint10;448. can.repaint();449. 450. if(e.getSource()=train)451. standard();452. 453. for(inti=0;i12;i+)454. samplemodeli=rowi;455. 456. for(inti=0;i8;i+)457. sample2modeli=coli;458. 459. if(model=9)460. recognize.setEnabled(true);461. choice1.setEnabled(true);462. choice2.setEnabled(true);463. 464. for(inti=0;i12;i+)465. rowi=0;466. 467. for(inti=0;i8;i+)468. coli=0;469. 470. 471. /for(inti=0;i12;i+)472. /System.out.print(samplemodeli+);473. /474. 475. if(e.getSource()=newSample)476. sample=newint1012;477. area.setText(请依次输入0-9样本。);478. recognize.setEnabled(false);479. choice1.setEnabled(false);480. choice2.setEnabled(false);481. train.setEnabled(true);482. num.setEnabled(true);483. clear.setEnabled(true);484. isSaved=false;485. 486. if(e.getSource()=save)487. fdsave.setVisible(true);488. Strings;489. try490. if(fdsave.getFile()!=null)491. Filefile=newFile(fdsave.getDirectory(),fdsave.getFile();492. file_writer=newFileWriter(file);493. out=newBufferedWriter(file_writer);494. for(inti=0;i10;i+)495. for(intj=0;j12;j+)496. Integeraa=newInteger(int)sampleij);497. s=aa.toString();498. out.write(s,0,s.length();499. out.flush();500. out.newLine();501. 502. for(intj=0;j8;j+)503. Integeraa=newInteger(int)sample2ij);504. s=aa.toString();505. out.write(s,0,s.length();506. out.flush();507. out.newLine();508. 509. 510. out.close();511. file_writer.close();512. 513. catch(FileNotFoundExceptione1)514. catch(IOExceptione2)515. isSaved=true;516. 517. if(e.getSource()=load)518. fdload.setVisible(true);519. Strings=newString();520. try521. if(fdload.getFile()!=null)522. Filefile=newFile(fdload.getDirectory(),fdload.getFile();523. file_reader=newFileReader(file);524. in=newBufferedReader(file_reader);525. Integeraa=newInteger(0);526. for(inti=0;i10;i+)527. for(intj=0;j12;j+)528. s=in.readLine();529. sampleij=aa.parseInt(s);530. 531. for(intj=0;j8;j+)532. s=in.readLine();533. sample2ij=aa.parseInt(s);534. 535. 536. in.close();537. file_reader.close();538. 539. catch(FileNotFoundExceptione1)fdload.setVisible(false);fd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论