回答
区分解锁键盘数字按钮的方法
你说得对,解锁键盘上的数字按钮通常颜色非常相似,仅通过单一颜色识别确实难以区分不同数字。Hamibot提供了几种解决方案:
方案一:多点找色技术
即使按钮主色相同,但每个按钮的相对位置和周围像素有细微差异。可以使用findMultiColors方法,通过检查相对位置的颜色组合来精确定位特定数字。
方案二:OCR识别(推荐方案)
OCR是识别解锁键盘数字的最佳方法,因为它直接识别屏幕上显示的文字内容,不受颜色限制。
OCR识别解锁数字并点击的完整示例
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
if (!requestScreenCapture()) {
toastLog('请授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
// 等待界面稳定
sleep(2000);
var img = captureScreen();
// 使用OCR识别屏幕上的数字
var ocrResult = images.ocr(img);
if (!ocrResult || ocrResult.length === 0) {
toastLog('未识别到任何文字');
hamibot.exit();
}
// 假设我们要点击数字5
var targetNumber = '5';
var found = false;
for (var i = 0; i < ocrResult.length; i++) {
var item = ocrResult[i];
// 检查识别结果是否包含目标数字
if (item.text.indexOf(targetNumber) !== -1) {
// 计算点击位置(取文本区域中心点)
var x = (item.bounds.left + item.bounds.right) / 2;
var y = (item.bounds.top + item.bounds.bottom) / 2;
toastLog('找到数字 ' + targetNumber + ',坐标: (' + x + ', ' + y + ')');
click(x, y);
found = true;
break;
}
}
if (!found) {
toastLog('未找到数字 ' + targetNumber);
}
hamibot.exit();
优化建议
-
提高OCR准确率:
- 可以先截取键盘区域进行识别,减少干扰
- 设置合适的识别区域:
images.ocr(img, {region: [x, y, width, height]})
-
处理模糊识别:
// 模糊匹配数字 function findNumberPosition(ocrResults, number) { for (var i = 0; i < ocrResults.length; i++) { var text = ocrResults[i].text.replace(/\D/g, ''); // 移除非数字字符 if (text === number) { return ocrResults[i].bounds; } } return null; } -
多点验证:
识别到数字后,可以再用images.detectsColor检查按钮颜色特征,双重确认位置准确性
对于解锁界面这种关键操作,建议结合OCR和多点找色技术,先用OCR确定大致位置,再用多点找色精确定位,这样能获得最高的识别准确率和稳定性。
ℹ️ 本回答由 AI 生成,内容仅供参考