//识别 private void label3_Click(object sender, EventArgs e) { #region 准备字典 InitDict(); var dict = Dict.ToArray(); #endregion #region 把每个笔画录入矩阵数据 var pointdd = new Point[1][]; var traindata = new MatrixData(); for (int i = 0; i < ArrayPtBuff.Count; i++) { pointdd[0] = ArrayPtBuff[i].ToArray(); traindata.RecordOne(pointdd); } #endregion //识别的数据 var test = GetDim1Matrix(traindata); //笔画识别结果 var sortresult = ""; #region 让神经网络加载训练结果并进行识别 var hbpn = new HBPN(File.ReadAllText("GData.json")); for (int i = 0; i < test.GetLength(0); i++) { var sim0 = hbpn.sim(test.GetColumn(i)); int like = 0; var distant = double.MaxValue; for (int k = 0; k < sim0.Length; k++) { if (Math.Abs(sim0[k] - 1) > distant) { continue; } distant = Math.Abs(sim0[k] - 1); like = k; } //result += "㇐㇑㇀㇏㇕㇗㇡"[like]; sortresult += "123455555555555"[like]; } #endregion #region 这里计算字典中每个字与识别结果的相似度 for (int i = 0; i < dict.Length; i++) { dict[i].distance = EditorDistance.Levenshtein(dict[i].Code[0], sortresult); } #endregion #region 根据相似度,对字典进行排序 for (int i = 0; i < dict.Length; i++) { for (int j = i + 1; j < dict.Length; j++) { if (dict[i].distance < dict[j].distance) { var temp = dict[i]; dict[i] = dict[j]; dict[j] = temp; } } } #endregion //字符识别结果 var result = ""; #region 根据相似度排序 for (int i = 0; i < 20; i++) { result += dict[i].TheChar.ToString(); } #endregion MessageBox.Show(result, sortresult); Clear(); traindata.Clear(); }
private void button1_Click(object sender, EventArgs e) { MatrixData.Clear(); MessageBox.Show("OK"); return; }