⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handwritingrecognition.java

📁 用Java编写的手写数字识别器源代码。能够对手写数字有很好的识别能力。经过试验
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                        for(int j=0;j<8;j++){
                           Integer aa=new Integer((int)sample2[i][j]);
                           s=aa.toString();
                           out.write(s,0,s.length());
                           out.flush();
                           out.newLine();
                        }
                     }
                     out.close();
                     file_writer.close();
                  }
               }catch(FileNotFoundException e1){}
               catch(IOException e2){}
               }
               isSaved=true;
            }
       
            System.exit(0);
         
     }
	  if(e.getSource()==recognize){
	     standard();
	     for(int i=0;i<10;i++){
	        for(int j=0;j<12;j++){
	           dismantle[i]+=Math.abs(sample[i][j]-row[j]);
	        }
           for(int j=0;j<8;j++){
              dismantle[i]+=Math.abs(sample2[i][j]-col[j]);
           }
	        System.out.print(dismantle[i]+" ");
	     }
	     
	     
	     first=second=0;
	     for(int i=0;i<10;i++){
	        if(dismantle[i]<dismantle[first]){
	           first=i;  
	        }
	     }
	     if(first==0)second=1;
	     for(int i=0;i<10;i++){
	        if(i==first)continue;
	        if(dismantle[i]<dismantle[second]){
	           second=i;
	        }
	     }
        for(int j=0;j<12;j++){
           d1+=sample[first][j]-row[j];
        }
        for(int j=0;j<8;j++){
           d1+=sample2[first][j]-col[j];
        }
        for(int j=0;j<12;j++){
           d2+=sample[second][j]-row[j];
        }
        for(int j=0;j<8;j++){
           d2+=sample2[second][j]-col[j];
        }
	     for(int i=0;i<12;i++){
	        row[i]=0;
	     }
        for(int i=0;i<8;i++){
            col[i]=0;
         }
	     choice1.setLabel("I: "+first);
	     choice2.setLabel("II: "+second);
        
        System.out.print(d1+" "+d2);
        d1=d2=0;
	  }
	  if(e.getSource()==choice1){
	     /*for(int i=0;i<12;i++){
	        sample[first][i]=(row[i]-sample[first][i])/5+sample[first][i];
	     }
        for(int i=0;i<8;i++){
           sample2[first][i]=(col[i]-sample2[first][i])/5+sample2[first][i];
        }*/
        resultLen--;
        if(resultLen==0){
           resultLen=10;
           result2.setText("");
        }
        isSaved=false;
	     Integer i=new Integer(first);
	     result2.append(i.toString());
	  }
	  if(e.getSource()==choice2){
        for(int i=0;i<12;i++){
           sample[second][i]=(row[i]-sample[second][i])/5+sample[second][i];
        }
        for(int i=0;i<8;i++){
           sample2[second][i]=(col[i]-sample2[second][i])/5+sample2[second][i];
        }
        isSaved=false;
        resultLen--;
        if(resultLen==0){
           resultLen=10;
           result2.setText("");
        }
        Integer i=new Integer(second);
        result2.append(i.toString());
     }
	  if(e.getSource()==clear){
         input=new int[12][8];
         row=new int[12];
         count=0;
         stroke=0;
         x=new int[500];
         y=new int[500];
         dismantle=new int[10];
         can.repaint();
      }
      if(e.getSource()==train){
         standard();
         
         for(int i=0;i<12;i++){
            sample[model][i]=row[i];
         }
         for(int i=0;i<8;i++){
            sample2[model][i]=col[i];
         }
         if(model==9){
            recognize.setEnabled(true);
            choice1.setEnabled(true);
            choice2.setEnabled(true);
         }
         for(int i=0;i<12;i++){
           row[i]=0;
         }
         for(int i=0;i<8;i++){
            col[i]=0;
         }
        
         //for(int i=0;i<12;i++){
         //   System.out.print(sample[model][i]+" ");
         //}
      }
      if(e.getSource()==newSample){
         sample=new int[10][12];
         area.setText("请依次输入0-9样本。");
         recognize.setEnabled(false);
         choice1.setEnabled(false);
         choice2.setEnabled(false);
         train.setEnabled(true);
         num.setEnabled(true);
         clear.setEnabled(true);
         isSaved=false;
      }
      if(e.getSource()==save){
         fdsave.setVisible(true);
         String s;
         try{
            if(fdsave.getFile()!=null){
               File file=new File(fdsave.getDirectory(),fdsave.getFile());
               file_writer=new FileWriter(file);
               out=new BufferedWriter(file_writer);
               for(int i=0;i<10;i++){
                  for(int j=0;j<12;j++){
                     Integer aa=new Integer((int)sample[i][j]);
                     s=aa.toString();
                     out.write(s,0,s.length());
                     out.flush();
                     out.newLine();
                  }
                  for(int j=0;j<8;j++){
                     Integer aa=new Integer((int)sample2[i][j]);
                     s=aa.toString();
                     out.write(s,0,s.length());
                     out.flush();
                     out.newLine();
                  }
               }
               out.close();
               file_writer.close();
             }
          }catch(FileNotFoundException e1){}
           catch(IOException e2){}
           isSaved=true;
      }
      if(e.getSource()==load){
         fdload.setVisible(true);
         String s=new String();
         try{
            if(fdload.getFile()!=null){
               File file=new File(fdload.getDirectory(),fdload.getFile());
               file_reader=new FileReader(file);
               in=new BufferedReader(file_reader);
               Integer aa=new Integer(0);
               for(int i=0;i<10;i++){
                  for(int j=0;j<12;j++){
                     s=in.readLine();
                     sample[i][j]=aa.parseInt(s);
                  }
                  for(int j=0;j<8;j++){
                     s=in.readLine();
                     sample2[i][j]=aa.parseInt(s);
                  }
               }
               in.close();
               file_reader.close();
               }
         }catch(FileNotFoundException e1){fdload.setVisible(false);fdload.dispose();}
          catch(IOException e2){}
         recognize.setEnabled(true);
         clear.setEnabled(true);
         choice1.setEnabled(true);
         choice2.setEnabled(true);
         train.setEnabled(true);
         num.setEnabled(true);
         area.setText("请开始手写输入识别");
         
      }
      if(e.getSource()==edition){
         About abt=new About();
      }            
      if(e.getSource()==num){
         String s=(String)num.getSelectedItem();
         if(s.equals("0")){
            model=0;
         }
         if(s.equals("1")){
            model=1;
         }
         if(s.equals("2")){
            model=2;
         }
         if(s.equals("3")){
            model=3;
         }
         if(s.equals("4")){
            model=4;
         }
         if(s.equals("5")){
            model=5;
         }
         if(s.equals("6")){
            model=6;
         }
         if(s.equals("7")){
            model=7;
         }
         if(s.equals("8")){
            model=8;
         }
         if(s.equals("9")){
            model=9;
         }
         
      }
   }
   
   public void itemStateChanged(ItemEvent e){
   }
   

	public static void main(String args[]) {
		HandWritingRecognition frame=new HandWritingRecognition();
	}
	

	     
	
	class myCanvas extends Canvas implements MouseListener,MouseMotionListener{
	  
	  myCanvas(){
	     addMouseListener(this);
	     addMouseMotionListener(this);
	     setBackground(Color.white);
	  }
	  
	  public void paint(Graphics g){
	     g.setColor(Color.red);
	     for(int i=0;i<count-1;i++){
	        if(x[i+1]==-1){
	           i++;
	           continue;
	        }else{
	           g.drawLine(x[i],y[i],x[i+1],y[i+1]);
	        }
	     }
	  }
	  
	  public void mouseClicked(MouseEvent me){}
	  public void mousePressed(MouseEvent me){
	     x[count]=me.getX();
	     y[count]=me.getY();
	     count++;
	  }
	  public void mouseReleased(MouseEvent me){
	     x[count]=-1;
	     y[count]=-1;
	     stroke++;
	     count++;
	  }
	  public void mouseEntered(MouseEvent me){}
	  public void mouseExited(MouseEvent me){}
	  
	  public void mouseDragged(MouseEvent me){
	     x[count]=me.getX();
	     y[count]=me.getY();
	     //System.out.println(x[count]+" "+y[count]);
	     count++;
	     repaint();
	  }
	  public void mouseMoved(MouseEvent me){
	     int tempx=me.getX();
	     int tempy=me.getY();
	     //area.setText(tempx+" "+tempy);
	  }
   }
}
 class About extends JFrame{
     About(){
        Container con=getContentPane();
        con.setLayout(null);
        JLabel message=new JLabel();
        JLabel message1=new JLabel();
        setSize(250,150);
        setLocation(350,200);
        setTitle("版本");
        con.add(message);
        message.setText("版本:1.0");
        message.setBounds(20,5,150,30);
        con.add(message1);
        message1.setText("作者:09001211 钱磊");
        message1.setBounds(20,40,150,50);
        
        addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            dispose();
            
         }
         
      });
         setVisible(true);
     }
   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -