sleep(3000);
log('开始截屏');
const img = captureScreen();
toastLog('开始识别');
const textResult = ocr.recognizeText(img);
toastLog('原始图片识别结果:' + textResult);
const cimg = captureScreen();
const grayImg = images.grayscale(cimg); // 转为灰度图,提升识别效果
const textResultGrayscale = ocr.recognizeText(grayImg);
toastLog('灰度图识别结果:' + textResultGrayscale);
//尝试点击操作
while (!click('军中行政区'))
sleep(1000);
//二次识别
log('开始截屏');
const img = captureScreen();
toastLog('开始识别');
const textResult = ocr.recognizeText(img);
toastLog('原始图片识别结果:' + textResult);
const cimg = captureScreen();
const grayImg = images.grayscale(cimg); // 转为灰度图,提升识别效果
const textResultGrayscale = ocr.recognizeText(grayImg);
toastLog('灰度图识别结果:' + textResultGrayscale);
//二次点击
while (!click('分享'))
sleep(1000);
汇报错,请修复
如何进行点击图片功能
有没有更简单的图片识别点击功能?
回答
你的脚本中存在一些问题,以下是修复后的版本:
// 文档地址 https://docs.hamibot.com/
sleep(3000);
log('开始截屏');
const img = captureScreen();
toastLog('开始识别');
const textResult = ocr.recognizeText(img);
toastLog('原始图片识别结果:' + textResult);
const cimg = captureScreen();
const grayImg = images.grayscale(cimg); // 转为灰度图,提升识别效果
const textResultGrayscale = ocr.recognizeText(grayImg);
toastLog('灰度图识别结果:' + textResultGrayscale);
//尝试点击操作
while (!click('军中行政区'))
sleep(1000);
//二次识别
log('开始截屏');
const img2 = captureScreen();
toastLog('开始识别');
const textResult2 = ocr.recognizeText(img2);
toastLog('原始图片识别结果:' + textResult2);
const cimg2 = captureScreen();
const grayImg2 = images.grayscale(cimg2); // 转为灰度图,提升识别效果
const textResultGrayscale2 = ocr.recognizeText(grayImg2);
toastLog('灰度图识别结果:' + textResultGrayscale2);
//二次点击
while (!click('分享'))
sleep(1000);
修改说明:
- 修复了变量重复定义的问题(将第二个
img改为img2,第二个cimg改为cimg2,第二个grayImg改为grayImg2,第二个textResult改为textResult2,第二个textResultGrayscale改为textResultGrayscale2)。 - 保持了原有的逻辑和功能。
补充回答 1
你可以使用 Hamibot 提供的图像识别功能来实现点击图片的功能。以下是一个简单的示例代码,用于在屏幕上查找特定的图片并点击它:
// 读取大图和小图(模板)
var img = images.read('/sdcard/大图.png');
var template = images.read('/sdcard/小图.png');
// 查找小图在大图中的位置
var point = images.findImage(img, template);
if (point != null) {
// 如果找到了图片,点击该位置
click(point.x, point.y);
} else {
// 如果未找到图片,输出提示信息
toast("未找到指定的图片");
}
说明:
images.read(path):读取指定路径的图片。images.findImage(img, template, options):在大图img中查找小图template的位置。options是可选参数,可以设置相似度、查找区域等。click(x, y):点击指定的坐标位置。
注意事项:
- 确保图片路径正确,并且图片已经存储在设备上。
- 如果图片无法找到,可以调整
threshold参数提高相似度要求。 - 如果需要在特定区域内查找图片,可以使用
region参数指定查找区域。
如果你需要更复杂的图像处理或点击逻辑,可以根据具体需求进行调整。
补充回答 2
可以使用 Hamibot 提供的更简洁的图片识别点击功能。以下是一个简单的示例代码,用于在屏幕上查找特定的图片并点击它:
// 请求截图权限
auto.waitFor();
// 截图并查找图片
var img = captureScreen();
var point = findImage(img, images.read('/sdcard/小图.png'), {
threshold: 0.8, // 设置相似度
region: [0, 0, 1080, 1920] // 设置查找区域
});
if (point != null) {
// 如果找到了图片,点击该位置
click(point.x, point.y);
} else {
// 如果未找到图片,输出提示信息
toast("未找到指定的图片");
}
说明:
auto.waitFor():请求截图权限。captureScreen():截取当前屏幕。findImage(img, template, options):在大图img中查找小图template的位置。options是可选参数,可以设置相似度、查找区域等。click(x, y):点击指定的坐标位置。
注意事项:
- 确保图片路径正确,并且图片已经存储在设备上。
- 如果图片无法找到,可以调整
threshold参数提高相似度要求。 - 如果需要在特定区域内查找图片,可以使用
region参数指定查找区域。
这个方法更加简洁,适合快速实现图片识别和点击功能。