C# 手写识别的实现示例

 更新时间:2023年08月24日 15:13:49   作者:qw_6918966011  
本文主要介绍了C# 手写识别的实现示例,文章详细介绍了如何使用C#语言调用OpenCV库实现手写识别,并通过示例程序展示了整个手写识别过程,感兴趣的可以了解一下

书写识别,网上的大佬们都有输出。

书写识别存在的2个问题:

我结合之前开发经验,整理下书写识别比较完善的方案。

单个字的识别方案

     private List<string> Recognize(StrokeCollection strokes)
     {
         if (strokes == null || strokes.Count == 0)
             return null;
         // 创建识别器
         var recognizers = new Recognizers();
         var chineseRecognizer = recognizers.GetDefaultRecognizer(0x0804);
         using var recContext = chineseRecognizer.CreateRecognizerContext();
         // 根据StrokeCollection构造 Ink 类型的笔迹数据。
       using var stream = new MemoryStream();
       strokes.Save(stream);
       using var inkStorage = new Ink();
       inkStorage.Load(stream.ToArray());
       using var inkStrokes = inkStorage.Strokes;
       //设置笔画数据
       using (recContext.Strokes = inkStrokes)
       {
           //识别笔画数据
           var recognitionResult = recContext.Recognize(out var statusResult);
           // 如果识别过程中出现问题,则返回null
           return statusResult == RecognitionStatus.NoError ?
               recognitionResult.GetAlternatesFromSelection().OfType<RecognitionAlternate>().Select(i => i.ToString()).ToList() :
               null;
       }
   }

这里单字识别,想要提高识别率,可以将stroke合并成一个:

var points = new StylusPointCollection();
    foreach (var stroke in strokes)
    {
        points.Add(new StylusPointCollection(stroke.StylusPoints));
    }
    var newStroke = new StrokeCollection
    {
        new Stroke(points)
    };

多字的识别方案

 public IEnumerable<string> Recognize(StrokeCollection strokes)
     {
         if (strokes == null || strokes.Count == 0)
             return null;
         using var analyzer = new InkAnalyzer();
         analyzer.AddStrokes(strokes,0x0804);
         analyzer.SetStrokesType(strokes, StrokeType.Writing);
         var status = analyzer.Analyze();
       if (status.Successful)
       {
           var alternateCollection = analyzer.GetAlternates();
           return alternateCollection.OfType<AnalysisAlternate>().Select(x => x.RecognizedString);
       }
       return null;
   }
 

看下效果图

环境及DLL引用

引用的命名空间是:Windows.Ink和MicroSoft.Ink,需要引用的DLL文件有四个。

  • IACore.dll、IALoader.dll、IAWinFX.dll,这三个DLL文件都是Intel集成显卡驱动的重要组成部分,包含了图形处理模块,尤其是IAWinFX为WPF应用提供了支持硬件加速的图形渲染。
  • Microsoft.Ink.dll

值得说明一下,Windows.Ink与Microsoft.Ink在平台支持上不同,如果有要适配不同版本的windows,需要去上方代码修改下

  • Microsoft.Ink支持Windows XP、Vista 和 Win7 等旧版 Windows,兼容性高。但Win10及以上版本,官方推荐使用Windows.Ink
  • Windows.Ink,则仅支持Win8以上版本

引用了上面4个DLL文件后,还有2个环境问题:

  • 在App.config文件中,对节点startup添加属性 useLegacyV2RuntimeActivationPolicy="true"
  • 修改项目配置为x86

到此这篇关于C# 手写识别的实现示例的文章就介绍到这了,更多相关C# 手写识别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用C#与设备接口进行无缝通信的实现技巧

    使用C#与设备接口进行无缝通信的实现技巧

    随着物联网、智能设备和自动化技术的快速发展,越来越多的设备需要与计算机系统进行实时通信,而C#作为一门强大的编程语言,凭借其广泛的库支持和高效的开发效率,已成为与设备接口对接的理想选择,在本篇文章中,我们将探讨如何使用C#与设备进行无缝通信
    2025-01-01
  • C#调用python脚本的方法详解

    C#调用python脚本的方法详解

    这篇文章主要为大家详细介绍了C#调用python脚本的方法,文中通过示例代码介绍的非常详细,感兴趣的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • C#中TCP粘包问题的解决方法

    C#中TCP粘包问题的解决方法

    这篇文章主要为大家详细介绍了C#中TCP粘包问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • C#学习笔记整理-迭代器模式介绍

    C#学习笔记整理-迭代器模式介绍

    下面小编就为大家分享一篇C#学习笔记整理-迭代器模式介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Unity中的Tilemap流程分析

    Unity中的Tilemap流程分析

    这篇文章给大家介绍Unity中的Tilemap流程分析,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07
  • C#求n个数中最大值和最小值的方法

    C#求n个数中最大值和最小值的方法

    这篇文章主要介绍了C#求n个数中最大值和最小值的方法,涉及C#中max及min方法的使用技巧,需要的朋友可以参考下
    2015-05-05
  • UnityShader使用速度映射图实现运动模糊

    UnityShader使用速度映射图实现运动模糊

    这篇文章主要为大家详细介绍了UnityShader使用速度映射图实现运动模糊,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C#弃元与异步使用与区别

    C#弃元与异步使用与区别

    弃元是一种在代码中用于显式忽略特定值的占位符,没有实际存储空间,也没有关联的值,本文就来介绍一下C#弃元与异步使用,具有一定的参考价值,感兴趣的可以了解一下
    2026-03-03
  • Unity UI拖拽模型选择功能

    Unity UI拖拽模型选择功能

    这篇文章主要为大家详细介绍了Unity UI拖拽模型选择功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • C#华氏温度和摄氏温度相互转换的方法

    C#华氏温度和摄氏温度相互转换的方法

    这篇文章主要介绍了C#华氏温度和摄氏温度相互转换的方法,涉及C#数学运算的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07

最新评论