Ocr加载数据
- 函数原型
int __stdcall EB_Ocr加载数据 (const char* Serial, int* Font, int* Lib)
示例
#include <filesystem>
#include <windows.h>
#include <fstream>
//读取文件
std::vector<uint8_t> readFileBytes(const std::string& filePath) {
std::ifstream file(filePath, std::ios::binary | std::ios::ate);
std::streamsize size = file.tellg();
file.seekg(0, std::ios::beg);
std::vector<uint8_t> buffer(size);
file.read(reinterpret_cast<char*>(buffer.data()), size)
return buffer;
}
// 写内存字节集,成功返回内存指针地址,失败返回0
int* WriteByteArray(const std::vector<uint8_t>& data) {
size_t len = data.size();
if (len < 1) {
return nullptr;
}
// 分配内存:4字节长度 + 数据长度
int* ptr = (int*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 4 + len);
if (ptr == nullptr) {
return nullptr;
}
// 写入长度
*ptr = (int)len;
// 写入数据
memcpy(ptr + 1, data.data(), len);
return ptr;
}
auto sim = readFileBytes("D:\\chi_sim.zip");
auto lib = readFileBytes("D:\\tocr_libs.apk");
int* sim_data = WriteByteArray(sim);
int* lib_data = WriteByteArray(lib);
if(!EB_Ocr加载数据 ("emulator-5554",sim_data , lib_data)){
printf ("加载成功");
return true;
}else {
printf ("加载失败");
return false;
};
注意
需要时间处理线程,需给予充足时间
Ocr初始化
- 函数原型
int __stdcall EB_Ocr初始化 (const char* Serial)
参数定义
Serial
[设备标识] --手机设备标识符 ADB命令获取
返回值
0
成功-1
失败
示例
//确保已加载字库
if(!EB_Ocr初始化 ("emulator-5554")){
printf ("Ocr初始化成功");
return true;
}else {
printf ("Ocr初始化失败");
return false;
};
Ocr找字
- 函数原型
int __stdcall EB_Ocr找字 (const char* Serial, int x,int y ,int ex,int ey, const char* Str)
- 参数定义
Serial
[设备标识] -- 手机设备标识符 ADB命令获取x,y,ex,ey
[坐标范围]-- 范围越大,速度越慢Str
[待找文字]-- 正则查找,如:ab|cd
- 返回值
0
成功-1
失败
示例
if( !EB_Ocr找字 ("emulator-5554", 63,285,166,326,"系统应用") ){
printf ("已找到");
return true;
}else {
printf ("未找到");
return false;
};
Ocr找字EX
- 函数原型
int __stdcall EB_Ocr找字EX (const char* Serial, const char* Str)
参数定义
Serial
[设备标识] --手机设备标识符 ADB命令获取Str
[待找文字]-- 全屏查找
返回值
0
成功-1
失败
示例
if( !EB_Ocr找字EX ("emulator-5554","系统应用") ){
printf ("已找到");
return true;
}else {
printf ("未找到");
return false;
};
Ocr识字
- 函数原型
const char* __stdcall EB_Ocr识字 (const char* Serial, int x,int y,int ex,int ey,int Confidence)
参数定义
Serial
[设备标识] --手机设备标识符 ADB命令获取x,y,ex,ey
[坐标范围]-- 范围越大,速度越慢Confidence
[置信度] --- 默认70
返回值
""
失败
示例
printf ("识别到的字:",EB_Ocr识字 ("emulator-5554",63,285,166,326,70));