HandWriteRecognizer

封装Microsoft.Ink为C++动态库,可供其他语言调用手写识别

在java中使用

根据windows系统下载release中的win32.zip或win64.zip。其中HandWriteRecognizerLib.dll为C++动态库,Microsoft.Ink.dll为微软手写识别库,HandWriteRecognizerCSharp.dll是C#封装的中间层。

将C#的两个dll拷贝到java的bin目录,如果java是32位拷贝win32的,如果java是64位的拷贝win64的。

jna引用HandWriteRecognizerLib.dll

识别接口:

char* recognizer(char* strokes, int count)

strokes入参为笔画字符串,多个笔画用,eb,分割,笔画中的每个点按x1,y1,x2,y2,x3,y3顺序拼接。如x1,y1,x2,y2,x3,y3,eb,x1,y1,x2,y2,...

count入参为返回的最大识别字符数,返回接口可能小于等于该数。

返回为识别结果字符串,字符以英文空格间隔。

调用示例

定义jna接口

public interface HandWriteRecognizerLibrary extends Library {

//虽然loadLibrary已过时,不过试了load在springboot网站无法正常加载,原因未知。

HandWriteRecognizerLibrary INSTANCE = Native.loadLibrary("HandWriteRecognizerLib", HandWriteRecognizerLibrary.class);

Pointer recognizer(Pointer strokes, int count);

}

调用jna接口

Pointer strokesStrPointer = new Memory(strokesStr.length());

byte[] bytes = strokesStr.getBytes();

strokesStrPointer.write(0, bytes, 0, bytes.length);

Pointer result = new Memory(count * 2);

result = HandWriteRecognizerLibrary.INSTANCE.recognizer(strokesStrPointer, count);

String temp = result.getString(0);

if (StringUtils.isEmpty(temp)) {

return new String[0];

} else {

return temp.split(" ");

}

打包说明

请用vs2019(C++编译我不在行,使用其他IDE我不清楚怎么整)打开项目文件HandWriteRecognizer.sln。先右键HandWriteRecognizerCSharp项目生成后,再右键HandWriteRecognizerLib生成项目。最终生成目录在根目录的Debug或Release文件夹。将文件夹中的三个dll拷贝出来即可。

java+整合handwrite_GitHub - wmz46/HandWriteRecognizer: 封装Microsoft.Ink为C++动态库,可供其他语言调用手写识别...相关推荐

  1. 数字手写识别——Java实现KNN算法

    引言 手写识别也是当前机器学习的一大热点,数字手写识别是手写识别中的基础,我们用到的是knn算法,今天给大家讲一下我的实现方法: 环境 IDE:Eclipse 语言:Java 项目:数字手写识别 思路 ...

  2. java文字手写识别_【手写文字识别】-JavaAPI示例代码

    手写文字识别-JavaAPI示例代码 不知不觉手写文字识别百度已经开始邀测了.需要的小伙伴去申请了哦.申请方式加入文字识别群找PM.或者工单提交申请.都要说明自己的APPID哦. 接口地址:https ...

  3. c++封装so库,供安卓android调用

    文章目录 一.概述 二.用C/C++开发出Linux的so库 1.开发分析: 2.开发准备: 三.在C/C++代码里加入JNI,支持java通过JNI调用so库 1.JNI 是Java Native ...

  4. 手写识别ocr java,OCR 指的是手写文字技术_学小易找答案

    [判断题]双人舞中的动作必须是两个人一模一样的.( ) [单选题]____________________ engaged in the sale of products using marketin ...

  5. 手写识别ocr java,怎么识别手写文字?迅捷OCR文字识别软件帮你快速完成!

    怎么识别手写文字?虽然现在手机.平板等设备已经普及开来,但是从小在学校养成的习惯,还是让大部分人选择会手写的方式.手写其实也有很大的缺陷,无论是在生活中还是在网络上进行分享都比较困难. 那么有没有将手 ...

  6. java手写识别_手写识别系统

    目的 采用k-近邻算法实现手写识别系统.这里采用0和1组成数字0-9的形状,再用算法对这些形状进行识别,来分辨出形状属于0-9那个数字.并计算出k-近邻算法识别手写数字的错误率. 数据说明 数据来自& ...

  7. java linkedlist底层_手写Java LinkedList核心源码

    上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素.在查找需求比较重要的 ...

  8. 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )

    文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...

  9. 纯jsp实现评论功能_自己实现的java手写tomcat

    这是一个java写的模拟tomcat工作原理的demo,是一个极简的tomcat服务器,也是我们培训班(邦邦IT教育)的讲义,是整个j2ee培训的精髓,理解了这个demo其实后面的很多东西都是可以自学 ...

  10. JAVA简单手写数字识别

    作为一个机器学习的初学者,首先肯定是要有点自己的对机器学习的看法的.我认为的机器学习(在我目前接触到的知识来说.!!(大佬勿喷)),机器学习专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或 ...

最新文章

  1. sql常用语句使用方法
  2. 大数据安全标准现状和思考
  3. 第1部分:Ajax 入门简介
  4. TensorFlow Lite+Android,Google要搞的大事情
  5. UVA 10519 !! Really Strange !!
  6. java jks 转pfx_JKS和PFX文件相互转换方法
  7. 【Vue.js源码解析 三】-- 模板编译和组件化
  8. 数据结构实习-迷宫(基于Qt实现)
  9. 手把手教你从0到1进行Java项目实践
  10. Spark RDD Action
  11. 感情在钱面前一文不值,开公司谨记这6大规则
  12. 多线程之旅七——GUI线程模型,消息的投递(post)与处理
  13. 敏捷软件开发 - 原则、模式与实践
  14. 关于Vue中v-if 和 v-for一起使用
  15. mysql省市联动_sql全国 省市 联动级联
  16. 洛谷 P4556 [Vani有约会]雨天的尾巴 解题报告
  17. 采用汇编语言对c语言函数调用的方法求平均数 汇编实验报告,汇编措辞调用C措辞求平均数.doc...
  18. 遗传算法--函数最值问题
  19. jmeter将上一个接口的返回值作为下一个接口的参数
  20. “不能read和written”的关键因素—内存

热门文章

  1. 微信小程序使用 ocr 身份证识别
  2. 01 统计学与试验设计思想
  3. shl归纳推理测试题库_shl归纳推理测试答案
  4. 分布式操作系统的架构与性能
  5. windows下载mysql太慢
  6. java编写进行货币兑换_货币汇率java assignment
  7. Mac终端使用rzsz
  8. curviloft插件怎么用_Curviloft插件下载
  9. 地理空间坐标系统-城市坐标系与国家统一坐标系之间的转换(含四参数转换代码)
  10. gaussian09使用教程linux,Gaussian-09-GaussView5.0使用教程.ppt