private string[] Regconize() // REM 识别 ptinfos 中的点 { List <System.Drawing.Point> listpts = new List <System.Drawing.Point>(); foreach (var i in ptinfos) { listpts.Add(i.ToDrawingPoint()); } // REM 每一笔转换成stroke Stroke stroke = ink.CreateStroke(listpts.ToArray()); // REM 添加到识别器的上下文 recognizectx.Strokes.Add(stroke); RecognitionStatus recognizestatus = new RecognitionStatus(); RecognitionResult recognizeresult = recognizectx.Recognize(out recognizestatus); // REM 识别器的所有选择 RecognitionAlternates recognizealternates = recognizeresult.GetAlternatesFromSelection(); // REM 列出识别器所识别出的内容 List <string> result = new List <string>(); for (var i = 0; i <= recognizealternates.Count - 1; i++) { string text = recognizealternates[i].ToString(); // Console.WriteLine(text) result.Add(text); } return(result.ToArray()); }
// Listbox code to place all the possible results into the list private void textBox1_MouseUp(object sender, MouseEventArgs e) { listBox1.Items.Clear(); if (textBox1.SelectionLength > 0) { RecognitionAlternates alternates = recognitionResult.GetAlternatesFromSelection(textBox1.SelectionStart, textBox1.SelectionLength); foreach (RecognitionAlternate alternate in alternates) { listBox1.Items.Add(alternate); } //inkOverlay.Selection = alternates.Strokes; } }
public String Recognizer(String strokesStr, int count) { List <List <int[]> > strokes = new List <List <int[]> >(); var array = Regex.Split(strokesStr, ",eb,"); foreach (var item in array) { var stroke = new List <int[]>(); var array2 = item.Split(','); for (var i = 0; i < array2.Length; i = i + 2) { int[] point = new int[2]; point[0] = int.Parse(array2[i]); point[1] = int.Parse(array2[i + 1]); stroke.Add(point); } strokes.Add(stroke); } RecognizerContext recognizerContext = new Recognizers().GetDefaultRecognizer().CreateRecognizerContext(); Ink ink = new Ink(); recognizerContext.Strokes = ink.CreateStrokes(); foreach (List <int[]> stroke in strokes) { Point[] points = new Point[stroke.Count]; for (int i = 0; i < stroke.Count; i++) { points[i] = new Point(stroke[i][0], stroke[i][1]); } recognizerContext.Strokes.Add(ink.CreateStroke(points)); } RecognitionStatus recognitionStatus = RecognitionStatus.NoError; RecognitionResult recognitionResult = recognizerContext.Recognize(out recognitionStatus); var text = ""; if (recognitionStatus == RecognitionStatus.NoError) { RecognitionAlternates alts = recognitionResult.GetAlternatesFromSelection(); for (int i = 0; i < alts.Count && i < count; i++) { RecognitionAlternate alt = alts[i]; text += alt.ToString() + " "; } } return(text.Trim()); }
private string[] recognize() { List <string> results = new List <string>(10); this.recognizerContext.Strokes = this.ink.Strokes; RecognitionStatus status; RecognitionResult result = this.recognizerContext.Recognize(out status); if (status == RecognitionStatus.NoError) { RecognitionAlternates alts = result.GetAlternatesFromSelection(0, -1, 10); foreach (var alt in alts) { results.Add(alt.ToString()); } } return(results.ToArray()); }
/// <summary> /// Performs stroke-to-text recognition on all strokes added with /// <see cref="AddStroke(TouchStroke)"/>. An empty list is returned /// if no matches were found. You may modify the returned list. /// </summary> /// <param name="maxResults">Maximum number of results to return.</param> /// <exception cref="InvalidOperationException"> /// Thrown if no recognizer implementation has been set. /// </exception> /// <exception cref="StrokeRecognitionException"> /// Thrown if stroke recognition failed. /// </exception> public List <string> Recognize(int maxResults = 10) { EnsureNotDisposed(); if (_recognizerContext == null) { throw new InvalidOperationException("Recognizer not set"); } if (_strokes.Count == 0) { return(new List <string>()); } _recognizerContext.Strokes = _strokes; RecognitionStatus status; RecognitionResult recognizeResult = _recognizerContext.Recognize(out status); if (status != RecognitionStatus.NoError) { throw new StrokeRecognitionException("Recognition status: " + status); } RecognitionAlternates alternates; try { alternates = recognizeResult.GetAlternatesFromSelection(0, -1, maxResults); } catch (Exception ex) { throw new StrokeRecognitionException("Failed to get alternates", ex); } List <string> results = new List <string>(alternates.Count); foreach (RecognitionAlternate alternate in alternates) { results.Add(alternate.ToString()); } return(results); }
/// <summary> /// obtains and returns alternative recognition results /// </summary> /// <param name="strokes">the strokes to be recognized</param> /// <returns>list of alternative</returns> private RecognitionAlternates getAlternative(Strokes strokes) { try { RecognizerContext context = new RecognizerContext(); context.Strokes = strokes; RecognitionStatus status; RecognitionResult result = context.Recognize(out status); RecognitionAlternates ra; if (RecognitionStatus.NoError == status) { ra = result.GetAlternatesFromSelection(); } else { ra = null; } return(ra); } catch (Exception) { return(null); } }