java+整合handwrite_GitHub - wmz46/HandWriteRecognizer: 封装Microsoft.Ink为C++动态库,可供其他语言调用手写识别...
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++动态库,可供其他语言调用手写识别...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python获取淘宝服务器时间的代码
- 下一篇: [html] 写页面布局时需要考虑哪些