匹配绑定窗口图片7 - MatchWindowsThresholdFromPathAll
函数简介
二值化后匹配符合模板图片的坐标,返回相对绑定窗口坐标坐标
x1 , y1, x2, y2传 0, 0, 0, 0 为窗口整个客户区
返回数据类型解析:
{
"MatchVal": 0.85,//数据相似度
"MatchState": true,//返回数据是否大于指定精度,用于快速判断识别结果
"Index": 0,//多图识别时的返回索引
"Angle": 45.0,//识别结果角度
"MatchPoint": {
"x": 100,//识别结果X坐标
"y": 200//识别结果Y坐标
}
}
接口名称
MatchWindowsThresholdFromPathAll
DLL调用
long MatchWindowsThresholdFromPathAll(long ola, int x1, int y1, int x2, int y2, string colorJson, string templ, double matchVal, double angle, double scale)
参数定义:
ola
(长整型数): OLAPlug对象的指针,由DLL版本 CreateCOLAPlugInterFace 接口生成x1
(整型数): 查找区域的左上角X坐标y1
(整型数): 查找区域的左上角Y坐标x2
(整型数): 查找区域的右下角X坐标y2
(整型数): 查找区域的右下角Y坐标colorJson
(字符串): 颜色范围列表的JSON字符串,格式如下:[ { "StartColor": "3278FA", // 起始颜色(十六进制,不含#) "EndColor": "6496FF", // 结束颜色(十六进制,不含#) "Type": 0 // 处理类型:0-保留范围内颜色,1-保留范围外颜色 } ]
templ
(字符串): 模板图片的路径,支持多个图片,用"|"分隔,如"test.bmp|test2.bmp|test3.bmp"matchVal
(双精度浮点数): 相似度阈值,范围0-1,如0.85表示85%相似度angle
(双精度浮点数): 旋转角度,每次匹配后旋转指定角度继续匹配,直到匹配成功。角度越小匹配次数越多,时间越长。0为不旋转,速度最快scale
(双精度浮点数): 窗口缩放比例,默认为1。可通过GetScaleFromWindows接口获取当前窗口缩放
示例:
// 创建OLA对象
long ola = CreateCOLAPlugInterFace();
// 定义颜色范围列表
string colorJson = "[{\"StartColor\":\"3278FA\",\"EndColor\":\"6496FF\",\"Type\":0}]";
// 执行匹配
long ret = MatchWindowsThresholdFromPathAll(ola, 0, 0, 0, 0, colorJson, "test.bmp|test2.bmp", 0.85, 45.0, 1.0);
// 检查操作是否成功
if (ret != 0) {
// 获取匹配结果
char* result = (char*)ret;
printf("匹配结果: %s\n", result);
// 释放返回的字符串内存
FreeStringPtr(result);
} else {
// 匹配失败
}
COM调用
string MatchWindowsThresholdFromPathAll(int x1, int y1, int x2, int y2, string colorJson, string templ, double matchVal, double angle, double scale)
参数定义:
x1
(整型数): 查找区域的左上角X坐标y1
(整型数): 查找区域的左上角Y坐标x2
(整型数): 查找区域的右下角X坐标y2
(整型数): 查找区域的右下角Y坐标colorJson
(字符串): 颜色范围列表的JSON字符串templ
(字符串): 模板图片的路径,支持多个图片,用"|"分隔matchVal
(双精度浮点数): 相似度阈值,范围0-1angle
(双精度浮点数): 旋转角度scale
(双精度浮点数): 窗口缩放比例
示例:
// 定义颜色范围列表
string colorJson = "[{\"StartColor\":\"3278FA\",\"EndColor\":\"6496FF\",\"Type\":0}]";
// 执行匹配
string result = ola.MatchWindowsThresholdFromPathAll(0, 0, 0, 0, colorJson, "test.bmp|test2.bmp", 0.85, 45.0, 1.0);
// 检查操作是否成功
if (!result.empty()) {
// 匹配成功,result包含匹配结果
cout << "匹配结果: " << result << endl;
} else {
// 匹配失败
}
返回值
字符串: 返回JSON格式的匹配结果数组,每个匹配结果包含以下字段:
{
"MatchVal": 0.85, // 数据相似度
"MatchState": true, // 返回数据是否大于指定精度,用于快速判断识别结果
"Index": 0, // 多图识别时的返回索引
"Angle": 45.0, // 识别结果角度
"MatchPoint": {
"x": 100, // 识别结果X坐标
"y": 200 // 识别结果Y坐标
}
}
注意事项
- 当x1, y1, x2, y2都传0时,将搜索整个窗口客户区
- 颜色值使用十六进制格式,不包含#前缀
- 支持多个模板图片,用"|"分隔
- 角度参数影响匹配时间和精度:
- 角度越小,匹配次数越多,时间越长
- 角度为0时速度最快,但可能错过旋转的目标
- 缩放比例应与窗口实际缩放比例一致
- DLL调用返回的字符串指针需要调用 FreeStringPtr 释放内存
- 返回的坐标是相对于绑定窗口客户区的坐标
相关函数
- GetScaleFromWindows: 获取窗口缩放比例
- FreeStringPtr: 释放字符串内存
- MatchWindowsFromPathAll: 普通图片匹配