java+整合handwrite_GitHub - wmz46/HandWriteRecognizer: 封装Microsoft.Ink为C++动态库,可供其他语言调用手写识别...
HandWriteRecognizer
封裝Microsoft.Ink為C++動(dòng)態(tài)庫,可供其他語言調(diào)用手寫識(shí)別
在java中使用
根據(jù)windows系統(tǒng)下載release中的win32.zip或win64.zip。其中HandWriteRecognizerLib.dll為C++動(dòng)態(tài)庫,Microsoft.Ink.dll為微軟手寫識(shí)別庫,HandWriteRecognizerCSharp.dll是C#封裝的中間層。
將C#的兩個(gè)dll拷貝到j(luò)ava的bin目錄,如果java是32位拷貝win32的,如果java是64位的拷貝win64的。
jna引用HandWriteRecognizerLib.dll
識(shí)別接口:
char* recognizer(char* strokes, int count)
strokes入?yún)楣P畫字符串,多個(gè)筆畫用,eb,分割,筆畫中的每個(gè)點(diǎn)按x1,y1,x2,y2,x3,y3順序拼接。如x1,y1,x2,y2,x3,y3,eb,x1,y1,x2,y2,...
count入?yún)榉祷氐淖畲笞R(shí)別字符數(shù),返回接口可能小于等于該數(shù)。
返回為識(shí)別結(jié)果字符串,字符以英文空格間隔。
調(diào)用示例
定義jna接口
public interface HandWriteRecognizerLibrary extends Library {
//雖然loadLibrary已過時(shí),不過試了load在springboot網(wǎng)站無法正常加載,原因未知。
HandWriteRecognizerLibrary INSTANCE = Native.loadLibrary("HandWriteRecognizerLib", HandWriteRecognizerLibrary.class);
Pointer recognizer(Pointer strokes, int count);
}
調(diào)用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(" ");
}
打包說明
請(qǐng)用vs2019(C++編譯我不在行,使用其他IDE我不清楚怎么整)打開項(xiàng)目文件HandWriteRecognizer.sln。先右鍵HandWriteRecognizerCSharp項(xiàng)目生成后,再右鍵HandWriteRecognizerLib生成項(xiàng)目。最終生成目錄在根目錄的Debug或Release文件夾。將文件夾中的三個(gè)dll拷貝出來即可。
總結(jié)
以上是生活随笔為你收集整理的java+整合handwrite_GitHub - wmz46/HandWriteRecognizer: 封装Microsoft.Ink为C++动态库,可供其他语言调用手写识别...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python获取淘宝服务器时间的代码
- 下一篇: [html] 写页面布局时需要考虑哪些