 | |  |  |
- 找字随机点击():
- 使用OpenCV进行OCR识别。首先加载一个名为“今日头条极速版8.cv”的模板文件(这个文件需要预先准备,包含了OCR识别所需的训练数据)。
- 在识别结果中查找包含“今日头条极速版”的文字。
- 如果找到了目标文字,计算该文字所在区域的中心点坐标,并在此基础上增加随机偏移量(偏移量的范围是该区域大小的50%)。
- 执行点击操作,点击的位置是计算得到的随机坐标。
- 如果没有找到目标文字,则输出“未找到目标”。
- tomatoOcrClickText(target):
- 初始化TomatoOCR,加载相关APK文件并设置上下文和许可证。
- 对屏幕截图进行OCR识别,传入的参数是截图的Base64编码字符串。
- 在OCR识别结果中查找包含指定目标的文字。
- 找到目标后,计算其所在区域的中心点,并执行点击操作。
- 如果未找到目标文字,输出“未找到文字: + target”。
- mlKitOcrClickText(target):
- 使用MLKitOCR库对屏幕截图进行文字识别,识别语言设置为中文。
- 在OCR识别结果中查找包含指定目标的文字。
- 找到目标后,计算其所在区域的中心点,并在此基础上增加随机偏移量(偏移量的范围是该区域大小的50%)。
- 执行点击操作,点击的位置是计算得到的随机坐标。
- 如果未找到目标文字,输出“未找到目标”。
- findImageAndClick(imagePath):
- 使用OpenCV的图像匹配功能查找指定路径的图像模板在屏幕上的位置。
- 如果找到了目标图像,提取其在屏幕上的矩形区域坐标。
- 计算该矩形区域的中心点,并在此基础上增加随机偏移量(偏移量的范围是该区域大小的50%)。
- 执行点击操作,点击的位置是计算得到的随机坐标。
- 如果没有找到目标图像,输出“未找到图像”。
- nodeSearchAndClickText(target):
- 使用节点查找功能在屏幕上查找包含指定文本的目标节点。
- 如果找到了目标节点,解析其bounds属性以获取矩形区域坐标。
- 计算该矩形区域的中心点,并在此基础上增加随机偏移量(偏移量的范围是该区域大小的30%)。
- 执行点击操作,点击的位置是计算得到的随机坐标。
- 如果没有找到目标节点,输出“未找到节点”。
这些函数可以通过提供不同的目标文本或图像路径来执行不同的识别和点击操作。需要注意的是,代码中的auto.clickPoint() 和auto.clickPercent() 方法需要根据实际的自动化框架进行适配,确保能够在正确的环境中执行屏幕点击操作。 // 图片文字识别相关方法
// 使用opencv的OCR进行文字识别并随机点击 function 找字随机点击() { var ocr = opencv.OCREx('今日头条极速版8.cv'); if(!ocr) return;
var target = ocr.findIncludeText('今日头条极速版'); if(target) { var rect = target.rect; var screenWidth = screen.getScreenWidth(); var screenHeight = screen.getScreenHeight();
// 基础中心点计算 var centerX = (rect.left + rect.right)/2 * screenWidth; var centerY = (rect.top + rect.bottom)/2 * screenHeight;
// 在目标区域内添加随机偏移(范围50%区域大小) var randomRangeX = (rect.right - rect.left) * screenWidth * 0.5; var randomRangeY = (rect.bottom - rect.top) * screenHeight * 0.5;
// 计算最终随机点击位置 var clickX = Math.round(centerX + (Math.random() - 0.5) * randomRangeX); var clickY = Math.round(centerY + (Math.random() - 0.5) * randomRangeY);
auto.clickPoint(clickX, clickY); console.log('随机点击坐标:', clickX, clickY); } else { console.log('未找到目标'); } }
// 示例 找字随机点击(); // 该方法使用opencv的OCR功能在指定的图像文件中查找包含特定文字的目标,并在其区域内随机点击。
// 使用TomatoOCR进行文字识别并点击 function tomatoOcrClickText(target) { // OCR初始化 rhino.loadDex('TomatoOCR.apk'); importClass(com.tomato.ocr.aw.OCRApi);
var ocr = new OCRApi(); ocr.setContext(context, "ch-3.0"); ocr.setLicense("gAAAAABmeECYAAAAAGhay4AivnvqQn93I-ul15o53Bz_Xx6T_TlyeioUnjwgf4NuxPykjcq1syE8bN6XqW44SmBoKEcqLZaAVIFUkB8");
// OCR文字精确点击方法 function clickText(ocrResult, target) { var items = JSON.parse(ocrResult); for (var i = 0; i < items.length; i++) { var item = items; if (item.words.indexOf(target) >= 0) { var loc = item.location; var x1 = loc[0][0], y1 = loc[0][1]; var x2 = loc[1][0], y2 = loc[2][1]; auto.clickPoint(Math.round((x1 + x2) / 2), Math.round((y1 + y2) / 2)); console.log("已点击" + target + ",坐标: " + Math.round((x1 + x2) / 2) + "," + Math.round((y1 + y2) / 2)); return true; } } console.log("未找到文字: " + target); return false; }
// 使用示例 var result = ocr.ocrBase64(screen.screenShotFull().toBase64(), 3); console.log("识别结果: " + result); clickText(result, target); }
// 示例 tomatoOcrClickText("雷电游戏中心"); // 该方法使用TomatoOCR进行文字识别,并在找到包含特定文字的目标后点击该目标的中心位置。
// 使用MLKitOCR进行文字识别并随机点击 function mlKitOcrClickText(target) { // 截图并OCR识别 var img = screen.screenShotFull(); var ocrRes = img.MLKitOcr('zh'); console.log(ocrRes);
// 查找目标 var dect = ocrRes.findIncludeText(target); if (dect != null) { console.log('找到目标');
// 获取目标区域 var rect = dect.rect;
// 计算中心点坐标(rect坐标已经是像素值) var centerX = (rect.left + rect.right) / 2; var centerY = (rect.top + rect.bottom) / 2;
// 在目标区域内添加随机偏移(范围50%) var randomX = (Math.random() - 0.5) * (rect.right - rect.left) * 0.5; var randomY = (Math.random() - 0.5) * (rect.bottom - rect.top) * 0.5;
// 执行随机点击 auto.clickPoint( Math.round(centerX + randomX), Math.round(centerY + randomY) ); console.log('随机点击坐标:', Math.round(centerX + randomX), Math.round(centerY + randomY)); } else { console.log('未找到目标'); } }
// 示例 mlKitOcrClickText("小游戏"); // 该方法使用MLKitOCR进行文字识别,并在找到包含特定文字的目标后在其区域内随机点击。
// 图片查找相关方法
// 使用opencv查找图像并随机点击 function findImageAndClick(imagePath) { var detects = opencv.findImagesEx(imagePath);
if (detects != null) { console.log(detects);
// 获取获取结果的矩形区域 var rectStr = detects[0].getRect().toString(); var coords = rectStr.match(/[\d\.]+/g); // 提取坐标数字
if (coords && coords.length >= 4) { var x1 = parseFloat(coords[0]); var y1 = parseFloat(coords[1]); var x2 = parseFloat(coords[2]); var y2 = parseFloat(coords[3]);
// 计算随机坐标 var randomX = x1 + Math.random() * (x2 - x1); var randomY = y1 + Math.random() * (y2 - y1);
// 执行随机点击 //hid.click(randomX, randomY); //无碍随机点击 auto.clickPercent(randomX, randomY); console.log('随机点击坐标:', randomX, randomY); } else { // 如果没有坐标信息,执行默认点击 auto.clickPercent(0, 0); console.log('未获取到坐标信息,点击默认位置'); } } else { console.log('未找到图像'); } }
// 示例 findImageAndClick('图色489633.cv'); // 该方法使用opencv查找指定路径的图像文件,并在其区域内随机点击。
// 使用节点查找并随机点击 function nodeSearchAndClickText(target) { var nodesObj = auto.nodeSearch(3000).text(target);
if (nodesObj != '') { var nodeObj = nodesObj.getNode(0); console.log(nodeObj);
// 解析节点bounds属性 "矩形区域:left,top,right,bottom" var boundsStr = nodeObj.bounds.toString(); var coords = boundsStr.match(/[\d.]+/g); var left = parseFloat(coords[0]); var top = parseFloat(coords[1]); var right = parseFloat(coords[2]); var bottom = parseFloat(coords[3]);
// 计算中心点和随机偏移(范围30%) var centerX = (left + right) / 2; var centerY = (top + bottom) / 2; var randomX = (Math.random() - 0.5) * (right - left) * 0.3; var randomY = (Math.random() - 0.5) * (bottom - top) * 0.3;
// 计算最终点击位置 var x = Math.round(centerX + randomX); var y = Math.round(centerY + randomY);
console.log('随机点击坐标:', x, y); auto.clickPoint(x, y); console.log('点击完成 坐标:', x, y); } else { console.log('未找到节点'); } }
// 示例 nodeSearchAndClickText("小游戏"); // 该方法使用节点查找功能在当前界面中查找包含特定文字的节点,并在其区域内随机点击。
| |  | |  |
|