人人人人人人人人人人人人

c# UWP 墨迹 手写识别

 

  <InkCanvas Name="inkCanvas"></InkCanvas>
        <Button Name="btnRecognize" Content="RecognizeAsync" HorizontalAlignment="Left" Height="104" Margin="0,0,0,0" VerticalAlignment="Center" Width="488" Click="BtnReg_Click"></Button>

        <Button Name="btnClear" Content="Clear" HorizontalAlignment="Left" Height="104" Margin="804,56,0,0" VerticalAlignment="Top" Width="488" Click="clear_Click"></Button>







public MainPage()
        {
            this.InitializeComponent();

            inkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Pen | CoreInputDeviceTypes.Touch;
            //  inkCanvas.InkPresenter.SetPredefinedConfiguration


            InkDrawingAttributes drawingAttributes = inkCanvas.InkPresenter.CopyDefaultDrawingAttributes();
            drawingAttributes.IgnorePressure = true;
            drawingAttributes.Color = Colors.Red;
            drawingAttributes.Size = new Size(4, 4);
            inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes);

        }



    private void clear_Click(object sender, RoutedEventArgs e)
        {
         
            inkCanvas.InkPresenter.StrokeContainer.Clear(); 

        }

        private void BtnReg_Click(object sender, RoutedEventArgs e)
        {
            RecognizeAsync();
        }

        private async   void  RecognizeAsync() {

            //手写识别
            var container = new InkRecognizerContainer();//可以访问InkRecognizerContainer.GetRecognizers方法获取当前系统中已安装的语言识别引擎. 如果你是英文系统说不定没有安装中文的手写识别器。

//recognizers = recognizerContainer.GetRecognizers();
//var recognizer = recognizers.SingleOrDefault(r => r.Name == "Microsoft 中文(简体)手写识别器");
//recognizerContainer.SetDefaultRecognizer(recognizer);


//使用墨迹识别 var result = await container.RecognizeAsync(inkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); //获取识别结果 InkRecognitionResult 对象中还能获取候选字 try { if (result.Count > 0) { var txt = result[0].GetTextCandidates()[0]; btnRecognize.Content = txt; } } catch { } // inkCanvas.InkPresenter.InputProcessingConfiguration.Mode = Windows.UI.Input.Inking.InkInputProcessingMode.Erasing; return; }

  

 

 

另外如果需要设置擦除模式:inkcanvas.InkPresenter.InputProcessingConfiguration.Mode = InkInputProcessingMode.Erasing;

 

 

语音

现在很多人都是使用语音输入,把文字转为语音我已经写了一篇博客。
我们需要先有麦克风
首先我们需要设置语言
需要的识别,可以使用web
告诉用户需要输入

            Language language = SpeechRecognizer.SystemSpeechLanguage;
            speechRecognizer = new SpeechRecognizer(language);

            // 使用web
            SpeechRecognitionTopicConstraint web_search_grammar = new SpeechRecognitionTopicConstraint(SpeechRecognitionScenario.WebSearch, "webSearch"); 
            speechRecognizer.Constraints.Add(web_search_grammar);

            speechRecognizer.UIOptions.AudiblePrompt = "你想要说什么";
            speechRecognizer.UIOptions.ExampleText = "http://blog.csdn.net/lindexi_gd";

            SpeechRecognitionCompilationResult compilation_result = await speechRecognizer.CompileConstraintsAsync();
            if (compilation_result.Status == SpeechRecognitionResultStatus.Success)
            {
                // 识别
                IAsyncOperation<SpeechRecognitionResult> recognition_operation = speechRecognizer.RecognizeWithUIAsync();
                SpeechRecognitionResult speech_recognition_result = await recognition_operation;
                SpeechRecognitionConfidence confidence = speech_recognition_result.Confidence;//置信度
                string text = speech_recognition_result.Text;//获取语音
            }

语音:https://msdn.microsoft.com/zh-cn/library/windows/apps/dn596121.aspx

http://stackoverflow.com/questions/32153880/how-to-render-inkcanvas-to-an-image-in-uwp-windows-10-application/32551620

https://blogs.windows.com/buildingapps/2015/09/08/going-beyond-keyboard-mouse-and-touch-with-natural-input-10-by-10/

 

posted @ 2021-06-22 17:28  wgscd  阅读(197)  评论(0编辑  收藏  举报