111,126
社区成员
发帖
与我相关
我的任务
分享
//搜索tbChar中已经存储的字符
DbOper.DbCmd.CommandText = "select AutoId,LearnCharacter from tbChar order by LearnCharacter";
OleDbDataReader ddrChar = DbOper.DbCmd.ExecuteReader();
while (ddrChar.Read())
{
if (!ddrChar.IsDBNull(1))
LearnCharacter.Add(ddrChar.GetString(1));
}
ddrChar.Close();
//每个字符依次识别
for (int i = 0; i < LearnCharacter.Count; i++)
{
//按照频率从高到低的顺序查找出已存储字符的所有信息
DbOper.DbCmd.CommandText = string.Format("select AutoId,LearnCharacter,Eigenvalue,Frequency from tbLearn where LearnCharacter = '{0}' order by Frequency", LearnCharacter[i].Replace("'", "''"));
OleDbDataReader ddrLearn = DbOper.DbCmd.ExecuteReader();
Suited suited = new Suited(LearnCharacter[i], 0.0);
Template template = new Template();
int Itemplate = 0;
int chosenTemplateNum = 0; //被选中的tempalte编号(即该字符与需要识别的字符间特征向量距离最小的template)
while (ddrLearn.Read())
{
//判断数据库表中的各列,即特征值列是否为null
if (!ddrLearn.IsDBNull(0) && !ddrLearn.IsDBNull(1) && !ddrLearn.IsDBNull(2) && !ddrLearn.IsDBNull(3))
{
template = new Template(GetEigenvalueList(ddrLearn.GetString(2)), ddrLearn.GetFloat(3), ddrLearn.GetInt32(0));
suited.template[Itemplate] = template;
Itemplate++;
}
//随着查找比对的进行,
if (progressRecognition.Value < progressRecognition.Maximum)
progressRecognition.Value += 1;
}
ddrLearn.Close();