|
|
±¾µØµçÄÔ²¿ÊðYOLOÕÒͼ·þÎñÆ÷ʶ±ð
- https://www.yuque.com/aiwork/nba2pr/cqznidyq69qlitmu
¸´ÖÆ´úÂë
- // YOLO ÕÒͼÑÝʾ£ºµãÐÄÐÄ ¡ú Ï»¬Ò»¸öÊÓÆµ ¡ú µãÐÇÐÇ ¡ú Ï»¬ ¡ú Ñ»·
- // µçÄÔ¶ËÒª¿ª×Å£ºYOLO ·þÎñ(ÍÐÅÌͼ±ê)
- // Ä£°åͼÔÚµçÄÔ templates/ Îļþ¼Ð£ºhongxin.png(ÐÄÐÄ) shoucang.png(ÐÇÐÇ) dianzan.png hongbao.png
- var LAN = "http://192.168.10.103:8000"; // ¡ïµçÄÔ¾ÖÓòÍøIP
- var RELAY = "https://7yebr64h.qwenwork.host/"; // ¹«Íø¶µµ×(ÕÒͼģʽֻÓþÖÓòÍø)
- var ROOM = "yolo";
- // ¡ï¶¯×÷ÐòÁУº°´Ë³ÐòÖ´ÐС¢Ñ»·Íù¸´¡£["find","Ãû×Ö"]=ÕÒµ½Ä£°å¾Íµã£»["swipe"]=Ï»¬Ò»¸öÊÓÆµ
- var ¶¯×÷ÐòÁÐ = [
- ["find", "hongxin"], // µÚ1²½£ºÕÒµ½ÐÄÐÄ(µãÔÞ)¾Íµã
- ["swipe"], // µÚ2²½£ºÏ»¬Ò»¸öÊÓÆµ
- ["find", "shoucang"], // µÚ3²½£ºÕÒµ½ÐÇÐÇ(ÊÕ²Ø)¾Íµã
- ["swipe"] // µÚ4²½£ºÏ»¬Ò»¸öÊÓÆµ
- ];
- // ¾Éģʽ±¸Ó㺶¯×÷ÐòÁÐÁô¿Õ [] ʱ£¬LOOK_FOR ÀïµÄÃû×Ö"ÕÒµ½È«µã"£»Ò²¿ÕÔò×ß YOLO ʶ±ð
- var LOOK_FOR = [];
- var FIND_THR = 0.8; // Æ¥ÅäãÐÖµ£¬ÕÒ²»µ½¿É½µµ½0.7
- var ¼ä¸ôºÁÃë = 4000; // ÿ²½¼ä¸ô(ÈÃÊÓÆµ²¥Ò»»á¶ù)
- var lastResult = 0;
- var ²½Öè = 0;
- var http = new okHttp();
- print.log("[YOLO] == ÕÒͼÑÝʾ½Å±¾ÒÑÆô¶¯ ==");
- // ´øÖØÊ﵀ POST ±íµ¥
- function YOLO_post(url, body) {
- for (var t = 0; t < 2; t++) {
- try {
- var s = http.postForm(url.toString(), body.toString());
- if (s && ("" + s).charAt(0) === "{") return JSON.parse(s);
- } catch (e) {}
- java.lang.Thread.sleep(500);
- }
- return null;
- }
- // ´øÖØÊ﵀ GET
- function YOLO_get(url) {
- for (var t = 0; t < 2; t++) {
- try {
- var s = http.get(url.toString());
- if (s && ("" + s).charAt(0) === "{") return JSON.parse(s);
- } catch (e) {}
- java.lang.Thread.sleep(500);
- }
- return null;
- }
- // ---------- ÐòÁÐģʽ£ºÒ»²½Ò»¶¯×÷ ----------
- function ÅÜÒ»²½() {
- var st = ¶¯×÷ÐòÁÐ[²½Öè % ¶¯×÷ÐòÁÐ.length];
- if (st[0] === "swipe") {
- auto.swip(540, 1500, 540, 500, 300, 0); // ´ÓÏÂÍùÉÏ»¬=ÏÂÒ»¸öÊÓÆµ
- print.log("[ÐòÁÐ] µÚ" + (²½Öè + 1) + "²½: Ï»¬Ò»¸öÊÓÆµ");
- ²½Öè++;
- return;
- }
- var shot = screen.screenShotFull();
- if (!shot) { print.log("[YOLO Ìø¹ý] ½ØÍ¼Ê§°Ü"); return; }
- var f = YOLO_post(LAN + "/api/find",
- ("b64=" + encodeURIComponent(shot.toBase64()) + "&names=" + st[1] + "&thr=" + FIND_THR).toString());
- if (!f || !f.ok) { print.log("[ÐòÁÐ] ÍøÂ粨¶¯£¬ÏÂÂÖÖØÊÔ"); return; }
- var m = (f.matches || [])[0];
- if (m && m.found) {
- print.log("[ÐòÁÐ] µÚ" + (²½Öè + 1) + "²½: ÕÒµ½ " + m.name + " ÖÃÐŶÈ" + m.conf + " ÖÐÐĵã(" + m.center[0] + "," + m.center[1] + ")£¬µã»÷");
- auto.clickPoint(m.center[0], m.center[1]);
- ²½Öè++;
- } else {
- print.log("[ÐòÁÐ] µÚ" + (²½Öè + 1) + "²½: ûÕÒµ½ " + st[1] + "£¬ÏÂÂÖÔÙÕÒ");
- }
- }
- // ---------- ¾Éģʽ£ºÕÒµ½È«µã / YOLO ----------
- function YOLO_´¦Àí(res, ͨµÀ) {
- if (!res) return;
- print.log("[YOLO-" + ͨµÀ + "] È¡»Ø×ø±ê: " + (res.count || 0) + " ¸öÄ¿±ê");
- if ((res.count || 0) > 0) {
- var d = res.detections[0];
- print.log("[YOLO-" + ͨµÀ + "] µã»÷ " + d.label + " ÖÐÐĵã(" + d.center[0] + "," + d.center[1] + ")");
- auto.clickPoint(Math.round(d.center[0] * screen.getScreenWidth() / res.width),
- Math.round(d.center[1] * screen.getScreenHeight() / res.height));
- }
- }
- function ¾ÉģʽһÂÖ(b64) {
- if (LOOK_FOR.length) {
- var f = YOLO_post(LAN + "/api/find",
- ("b64=" + encodeURIComponent(b64) + "&names=" + LOOK_FOR.join(",") + "&thr=" + FIND_THR).toString());
- if (f && f.ok) {
- for (var k = 0; k < (f.matches || []).length; k++) {
- var m = f.matches[k];
- if (m.found) {
- print.log("[YOLO ÕÒͼ] ÕÒµ½ " + m.name + " ÖÃÐŶÈ" + m.conf + "£¬µã»÷");
- auto.clickPoint(m.center[0], m.center[1]);
- }
- }
- return;
- }
- }
- var d = YOLO_post(LAN + "/api/detect", ("b64=" + encodeURIComponent(b64)).toString());
- if (d && d.count !== undefined) { YOLO_´¦Àí(d, "¾ÖÓòÍø"); return; }
- var r = YOLO_post(RELAY + "put_img", ("room=" + ROOM + "&b64=" + encodeURIComponent(b64)).toString());
- if (!r || !r.ok) { print.log("[YOLO] ÍøÂ粨¶¯£¬±¾ÂÖÌø¹ý"); return; }
- for (var i = 0; i < 10; i++) {
- var g = YOLO_get(RELAY + "get_result?room=" + ROOM + "&after=" + lastResult);
- if (g && g.ok && g.id && g.id !== lastResult) {
- lastResult = g.id;
- if (g.id >= r.id) YOLO_´¦Àí(g.result || {}, "¹«Íø");
- break;
- }
- java.lang.Thread.sleep(300);
- }
- }
- setInterval(function () {
- try {
- if (¶¯×÷ÐòÁÐ.length) { ÅÜÒ»²½(); return; }
- var shot = screen.screenShotFull();
- if (!shot) { print.log("[YOLO Ìø¹ý] ½ØÍ¼Ê§°Ü"); return; }
- ¾ÉģʽһÂÖ(shot.toBase64());
- } catch (e) { print.log("[YOLO Òì³£] " + e); }
- }, ¼ä¸ôºÁÃë);
¸´ÖÆ´úÂë
|
|