コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: sclshu3714/INKT
        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());
        }
コード例 #2
0
 // 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;
     }
 }
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
 /// <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);
     }
 }