📄 handwritingrecognition.java
字号:
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 + -