Exemple #1
0
        //识别
        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();
        }
Exemple #2
0
 private void button1_Click(object sender, EventArgs e)
 {
     MatrixData.Clear();
     MessageBox.Show("OK");
     return;
 }