|
|
AIWROKÈí¼þÆ»¹ûϵͳÕÒͼ·½·¨ÍêÕûʾÀý¼¯ºÏ
- // Æ»¹ûϵͳÕÒͼ·½·¨»ã¼¯Ê¾Àý
- // ½»Á÷QQȺ711841924
- // Æ»¹ûϵͳÕÒͼ·½·¨ÍêÕûʾÀý¼¯ºÏ
- function sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
- }
- function main() {
- printl("========== Æ»¹ûϵͳÕÒͼ·½·¨»ã¼¯Ê¾Àý ==========\n");
- example1_findImagesEx(); // ʾÀý1: CVÎļþÄ£°åÆ¥ÅäÕÒͼ£¨×î»ù´¡Ó÷¨£©
- example2_findImages(); // ʾÀý2: ¶àͼ²éÕÒ£¨Ö§³Ö³¬Ê±ºÍÖÊÁ¿ÉèÖã©
- example3_templateMatch(); // ʾÀý3: ¶àÄ£°åÆ¥Åä²éÕÒ
- example4_findImagesEx_multi(); // ʾÀý4: µ¥CVÎļþ²éÕÒ¶à¸öÄ¿±ê
- example5_findImages_region(); // ʾÀý5: Ö¸¶¨ÇøÓòÕÒͼ
- example6_findImages_timeout(); // ʾÀý6: ´ø³¬Ê±µÄÕÒͼ
- example7_templateMatch_best(); // ʾÀý7: Ö»·µ»Ø×î¼ÑÆ¥Åä
- example8_findImages_quality(); // ʾÀý8: ²»Í¬½ØÍ¼ÖÊÁ¿µÄÕÒͼ
- example9_templateMatch_region(); // ʾÀý9: Ö¸¶¨ÇøÓòµÄÄ£°åÆ¥Åä
- example10_findImages_threshold(); // ʾÀý10: ²»Í¬ÏàËÆ¶ÈãÐÖµµÄÕÒͼ
- example11_comprehensive_flow(); // ʾÀý11: ×ÛºÏ×Ô¶¯»¯Á÷³Ì£¨ÊµÕ½°¸Àý£©
- printl("\n========== ËùÓÐʾÀýÖ´ÐÐÍê±Ï ==========");
- }
- // ·½·¨Ò»£ºfindImagesEx - CVÎļþÄ£°åÆ¥ÅäÕÒͼ£¨×î»ù´¡Ó÷¨£©
- function example1_findImagesEx() {
- printl("¡¾Ê¾Àý1¡¿findImagesEx - CVÎļþÄ£°åÆ¥ÅäÕÒͼ");
- printl("ÊÊÓó¡¾°£º²éÕÒµ¥¸öͼƬģ°å£¬×î¼òµ¥Ö±½ÓµÄÕÒͼ·½·¨");
- printl("ÑÝʾЧ¹û£º½»Ìæµã»÷Á½¸ö²»Í¬µÄÄ¿±ê");
- printl("µÈ´ý2ÃëÈ·±£ÆÁÄ»¼ÓÔØÍê³É...");
- sleep(2000);
-
- try {
- var detects1 = opencv.findImagesEx('ͼɫ769598.cv');
- if (detects1 != null && detects1.length > 0) {
- printl("✓ ÕÒµ½Ä¿±ê1£¬ÊýÁ¿: " + detects1.length);
- var rect1 = detects1[0].getRect();
- printl("Ä¿±ê1ÖÐÐĵã: x=" + rect1.getCenterX() + ", y=" + rect1.getCenterY());
- printl("µã»÷Ä¿±ê1");
- detects1[0].clickRandom();
- sleep(1000);
- } else {
- printl("✗ δÕÒµ½Ä¿±ê1£¬µÈ´ý1ÃëºóÖØÊÔ...");
- sleep(1000);
- detects1 = opencv.findImagesEx('ͼɫ769598.cv');
- if (detects1 != null && detects1.length > 0) {
- printl("✓ ÖØÊÔºóÕÒµ½Ä¿±ê1£¬ÊýÁ¿: " + detects1.length);
- var rect1 = detects1[0].getRect();
- printl("Ä¿±ê1ÖÐÐĵã: x=" + rect1.getCenterX() + ", y=" + rect1.getCenterY());
- printl("µã»÷Ä¿±ê1");
- detects1[0].clickRandom();
- sleep(1000);
- } else {
- printl("✗ ÖØÊÔºóÈÔδÕÒµ½Ä¿±ê1");
- }
- }
- var detects2 = opencv.findImagesEx('ͼɫ781849.cv');
- if (detects2 != null && detects2.length > 0) {
- printl("✓ ÕÒµ½Ä¿±ê2£¬ÊýÁ¿: " + detects2.length);
- var rect2 = detects2[0].getRect();
- printl("Ä¿±ê2ÖÐÐĵã: x=" + rect2.getCenterX() + ", y=" + rect2.getCenterY());
- printl("µã»÷Ä¿±ê2");
- detects2[0].clickRandom();
- sleep(1000);
- } else {
- printl("✗ δÕÒµ½Ä¿±ê2");
- }
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨¶þ£ºfindImages - ¶àͼ²éÕÒ£¨Ö§³Ö³¬Ê±ºÍÖÊÁ¿ÉèÖã©
- function example2_findImages() {
- printl("¡¾Ê¾Àý2¡¿findImages - ¶àͼ²éÕÒ");
- printl("ÊÊÓó¡¾°£ºÍ¬Ê±²éÕÒ¶àÕÅÏàËÆÍ¼Æ¬£¬Ö§³ÖÉèÖó¬Ê±ºÍ½ØÍ¼ÖÊÁ¿");
- try {
- var targetImages = ['ͼɫ769598.cv', 'ͼɫ769599.cv'];
- var multiFindResults = opencv.findImages(targetImages, 0.7, 3000, 1, [0, 0, 1, 1]);
-
- if (multiFindResults != null) {
- printl("¶àͼ²éÕҳɹ¦£¬ÕÒµ½Ä¿±êÊýÁ¿: " + multiFindResults.length);
- for (var i = 0; i < Math.min(3, multiFindResults.length); i++) {
- printl("Ä¿±ê" + i + ": x=" + multiFindResults[i].x + ", y=" + multiFindResults[i].y);
- }
-
- if (multiFindResults.length > 0) {
- printl("µã»÷µÚÒ»¸öÄ¿±ê");
- multiFindResults[0].clickRandom();
- }
- } else {
- printl("¶àͼ²éÕÒ³¬Ê±»òʧ°Ü");
- }
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨Èý£ºtemplateMatch - ¶àÄ£°åÆ¥Åä²éÕÒÄ¿±ê¶ÔÏó
- function example3_templateMatch() {
- printl("¡¾Ê¾Àý3¡¿templateMatch - ¶àÄ£°åÆ¥Åä²éÕÒ");
- printl("ÊÊÓó¡¾°£º»ùÓÚ¶à¸öÄ£°åͼƬÔÚÖ¸¶¨Í¼ÏñÖÐÆ¥ÅäÄ¿±ê£¬¿ÉÉèÖÃÆ¥ÅäÇøÓò¡¢ãÐÖµµÈ");
- try {
- var image = screen.screenShotFull();
- var mat = image.getMat();
-
- var templates = ['ͼɫ769598.cv', 'ͼɫ769599.cv'];
- var matchResults = opencv.templateMatch(mat, templates, 0.8, [0, 0, 1, 1], false);
-
- if (matchResults != null && matchResults.length > 0) {
- printl("Ä£°åÆ¥Åä³É¹¦£¬ÕÒµ½Ä¿±êÊýÁ¿: " + matchResults.length);
- for (var i = 0; i < Math.min(3, matchResults.length); i++) {
- printl("Ä¿±ê" + i + ": x=" + matchResults[i].x + ", y=" + matchResults[i].y +
- ", width=" + matchResults[i].width + ", height=" + matchResults[i].height);
- }
-
- printl("µã»÷µÚÒ»¸öÄ¿±ê");
- matchResults[0].clickRandom();
- } else {
- printl("Ä£°åÆ¥ÅäδÕÒµ½Ä¿±ê");
- }
-
- mat.close();
- image.close();
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨ËÄ£ºfindImagesEx - µ¥CVÎļþ²éÕÒ¶à¸öÄ¿±ê
- function example4_findImagesEx_multi() {
- printl("¡¾Ê¾Àý4¡¿findImagesEx - µ¥CVÎļþ²éÕÒ¶à¸öÄ¿±ê");
- printl("ÊÊÓó¡¾°£ºÆÁÄ»ÖдæÔÚ¶à¸öÏàͬµÄÄ¿±ê£¬ÐèҪȫ²¿ÕÒµ½");
- printl("×¢Ò⣺´ËʾÀýÔÚʾÀý1Ö´ÐкóÔËÐУ¬ÆÁĻ״̬¿ÉÄÜÒѸıä");
- try {
- var detects = opencv.findImagesEx('ͼɫ769598.cv');
- if (detects != null && detects.length > 0) {
- printl("ÕÒµ½ " + detects.length + " ¸öÄ¿±ê");
-
- for (var i = 0; i < detects.length; i++) {
- var rect = detects[i].getRect();
- printl("Ä¿±ê" + i + ": ÖÐÐĵã x=" + rect.getCenterX() + ", y=" + rect.getCenterY());
- }
-
- printl("µã»÷ËùÓÐÄ¿±ê");
- for (var i = 0; i < detects.length; i++) {
- detects[i].clickRandom();
- sleep(500);
- }
- } else {
- printl("δÕÒµ½Ä¿±ê");
- }
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨Î壺findImages - Ö¸¶¨ÇøÓòÕÒͼ
- function example5_findImages_region() {
- printl("¡¾Ê¾Àý5¡¿findImages - Ö¸¶¨ÇøÓòÕÒͼ");
- printl("ÊÊÓó¡¾°£ºÖ»ÔÚÆÁÄ»µÄÌØ¶¨ÇøÓò²éÕÒÄ¿±ê£¬Ìá¸ß²éÕÒЧÂÊ");
- try {
- var targetImages = ['ͼɫ769598.cv'];
-
- var region = [0.2, 0.2, 0.8, 0.8];
- printl("²éÕÒÇøÓò: [" + region.join(", ") + "]");
- printl("˵Ã÷£ºÇøÓò×ø±êΪ°Ù·Ö±È£¬[0.2, 0.2, 0.8, 0.8] ±íʾ´ÓÆÁÄ»20%λÖÿªÊ¼²éÕÒ");
-
- var regionResults = opencv.findImages(targetImages, 0.7, 3000, 1, region);
-
- if (regionResults != null) {
- printl("ÔÚÖ¸¶¨ÇøÓòÄÚÕÒµ½ " + regionResults.length + " ¸öÄ¿±ê");
- if (regionResults.length > 0) {
- regionResults[0].clickRandom();
- }
- } else {
- printl("Ö¸¶¨ÇøÓòÄÚδÕÒµ½Ä¿±ê");
- }
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨Áù£ºfindImages - ´ø³¬Ê±µÄÕÒͼ
- function example6_findImages_timeout() {
- printl("¡¾Ê¾Àý6¡¿findImages - ´ø³¬Ê±µÄÕÒͼ");
- printl("ÊÊÓó¡¾°£ºÉèÖòéÕÒ³¬Ê±Ê±¼ä£¬±ÜÃⳤʱ¼äµÈ´ý");
- try {
- var targetImages = ['ͼɫ769598.cv'];
-
- printl("¿ªÊ¼²éÕÒ£¬³¬Ê±Ê±¼ä: 5000ºÁÃë");
- printl("˵Ã÷£ºÈç¹û5000ºÁÃëÄÚδÕÒµ½Ä¿±ê£¬½«·µ»Ønull");
-
- var timeoutResults = opencv.findImages(targetImages, 0.7, 5000, 1, [0, 0, 1, 1]);
-
- if (timeoutResults != null) {
- printl("ÔÚ³¬Ê±Ç°ÕÒµ½Ä¿±ê");
- timeoutResults[0].clickRandom();
- } else {
- printl("²éÕÒ³¬Ê±£¬Î´ÕÒµ½Ä¿±ê");
- }
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨Æß£ºtemplateMatch - Ö»·µ»Ø×î¼ÑÆ¥Åä
- function example7_templateMatch_best() {
- printl("¡¾Ê¾Àý7¡¿templateMatch - Ö»·µ»Ø×î¼ÑÆ¥Åä");
- printl("ÊÊÓó¡¾°£ºÖ»¹ØÐÄ×îÆ¥ÅäµÄ½á¹û£¬ºöÂÔÆäËûÆ¥ÅäÏî");
- try {
- var image = screen.screenShotFull();
- var mat = image.getMat();
-
- var templates = ['ͼɫ769598.cv', 'ͼɫ769599.cv'];
-
- printl("²éÕÒ×î¼ÑÆ¥Å䣨best=true£©");
- printl("˵Ã÷£ºÖ»·µ»ØÏàËÆ¶È×î¸ßµÄÒ»¸öÆ¥Åä½á¹û");
-
- var bestMatch = opencv.templateMatch(mat, templates, 0.8, [0, 0, 1, 1], true);
-
- if (bestMatch != null && bestMatch.length > 0) {
- printl("ÕÒµ½×î¼ÑÆ¥Åä: x=" + bestMatch[0].x + ", y=" + bestMatch[0].y);
- bestMatch[0].clickRandom();
- } else {
- printl("δÕÒµ½×î¼ÑÆ¥Åä");
- }
-
- mat.close();
- image.close();
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨°Ë£ºfindImages - ²»Í¬½ØÍ¼ÖÊÁ¿µÄÕÒͼ
- function example8_findImages_quality() {
- printl("¡¾Ê¾Àý8¡¿findImages - ²»Í¬½ØÍ¼ÖÊÁ¿µÄÕÒͼ");
- printl("ÊÊÓó¡¾°£º¸ù¾ÝÐèÇóÑ¡Ôñ²»Í¬µÄ½ØÍ¼ÖÊÁ¿£¬Æ½ºâËٶȺÍ׼ȷ¶È");
- try {
- var targetImages = ['ͼɫ769598.cv'];
-
- printl("²âÊÔ²»Í¬½ØÍ¼ÖÊÁ¿£º");
- printl("ÖÊÁ¿0£¨±êÇ壩£ºËٶȿ죬ÊʺϿìËÙ²éÕÒ");
- var result0 = opencv.findImages(targetImages, 0.7, 3000, 0, [0, 0, 1, 1]);
- printl(" ±êÇå½á¹û: " + (result0 != null ? "ÕÒµ½" : "δÕÒµ½"));
-
- printl("ÖÊÁ¿1£¨¸ßÇ壩£ºËÙ¶ÈÖеȣ¬ÊʺÏÒ»°ã³¡¾°");
- var result1 = opencv.findImages(targetImages, 0.7, 3000, 1, [0, 0, 1, 1]);
- printl(" ¸ßÇå½á¹û: " + (result1 != null ? "ÕÒµ½" : "δÕÒµ½"));
-
- printl("ÖÊÁ¿2£¨³¬Ç壩£ºËÙ¶ÈÂý£¬ÊʺϾ«Ï¸²éÕÒ");
- var result2 = opencv.findImages(targetImages, 0.7, 3000, 2, [0, 0, 1, 1]);
- printl(" ³¬Çå½á¹û: " + (result2 != null ? "ÕÒµ½" : "δÕÒµ½"));
-
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨¾Å£ºtemplateMatch - Ö¸¶¨ÇøÓòµÄÄ£°åÆ¥Åä
- function example9_templateMatch_region() {
- printl("¡¾Ê¾Àý9¡¿templateMatch - Ö¸¶¨ÇøÓòµÄÄ£°åÆ¥Åä");
- printl("ÊÊÓó¡¾°£ºÔÚÆÁÄ»µÄÌØ¶¨ÇøÓòÄÚ½øÐÐÄ£°åÆ¥Åä");
- try {
- var image = screen.screenShotFull();
- var mat = image.getMat();
-
- var templates = ['ͼɫ769598.cv'];
- var region = [0.3, 0.3, 0.7, 0.7];
-
- printl("ÔÚÇøÓò [" + region.join(", ") + "] ÄÚ½øÐÐÄ£°åÆ¥Åä");
- printl("˵Ã÷£ºÖ»ÔÚÆÁÄ»ÖÐÑëÇøÓò²éÕÒ£¬Ìá¸ßЧÂÊ");
-
- var matchResults = opencv.templateMatch(mat, templates, 0.8, region, false);
-
- if (matchResults != null && matchResults.length > 0) {
- printl("ÔÚÖ¸¶¨ÇøÓòÄÚÕÒµ½ " + matchResults.length + " ¸öÄ¿±ê");
- matchResults[0].clickRandom();
- } else {
- printl("Ö¸¶¨ÇøÓòÄÚδÕÒµ½Ä¿±ê");
- }
-
- mat.close();
- image.close();
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨Ê®£ºfindImages - ²»Í¬ÏàËÆ¶ÈãÐÖµµÄÕÒͼ
- function example10_findImages_threshold() {
- printl("¡¾Ê¾Àý10¡¿findImages - ²»Í¬ÏàËÆ¶ÈãÐÖµµÄÕÒͼ");
- printl("ÊÊÓó¡¾°£º¸ù¾ÝÐèÇóµ÷ÕûÏàËÆ¶ÈãÐÖµ£¬Æ½ºâ¾«È·¶ÈºÍÕÙ»ØÂÊ");
- try {
- var targetImages = ['ͼɫ769598.cv'];
-
- printl("²âÊÔ²»Í¬ÏàËÆ¶ÈãÐÖµ£º");
- printl("ãÐÖµ0.5£¨¿íËÉ£©£ºÈÝÒ×ÕÒµ½£¬µ«¿ÉÄÜÎóÆ¥Åä");
- var result05 = opencv.findImages(targetImages, 0.5, 3000, 1, [0, 0, 1, 1]);
- printl(" ãÐÖµ0.5½á¹û: " + (result05 != null ? result05.length + "¸ö" : "δÕÒµ½"));
-
- printl("ãÐÖµ0.7£¨Öеȣ©£ºÆ½ºâ¾«È·¶ÈºÍÕÙ»ØÂÊ");
- var result07 = opencv.findImages(targetImages, 0.7, 3000, 1, [0, 0, 1, 1]);
- printl(" ãÐÖµ0.7½á¹û: " + (result07 != null ? result07.length + "¸ö" : "δÕÒµ½"));
-
- printl("ãÐÖµ0.9£¨Ñϸñ£©£ºÖ»Æ¥Åä·Ç³£ÏàËÆµÄÄ¿±ê");
- var result09 = opencv.findImages(targetImages, 0.9, 3000, 1, [0, 0, 1, 1]);
- printl(" ãÐÖµ0.9½á¹û: " + (result09 != null ? result09.length + "¸ö" : "δÕÒµ½"));
-
- } catch (e) {
- printl("´íÎó: " + e);
- }
- printl("");
- }
- // ·½·¨Ê®Ò»£º×ÛºÏ×Ô¶¯»¯Á÷³Ì - ÍêÕûµÄ×Ô¶¯»¯²Ù×÷Á÷³Ì£¨ÊµÕ½°¸Àý£©
- function example11_comprehensive_flow() {
- printl("¡¾Ê¾Àý11¡¿×ÛºÏ×Ô¶¯»¯Á÷³Ì - ʵս°¸Àý");
- printl("ÊÊÓó¡¾°£ºÍêÕûµÄ×Ô¶¯»¯²Ù×÷Á÷³Ì£¬Ä£Äâʵ¼ÊÓ¦ÓÃ");
- try {
- printl("========== ²½Öè1: ʹÓÃfindImagesEx²éÕÒµÚÒ»¸öÄ¿±ê ==========");
- var detects1 = opencv.findImagesEx('ͼɫ769598.cv');
- if (detects1 != null && detects1.length > 0) {
- printl("✓ ÕÒµ½Ä¿±ê1£¬µã»÷");
- printl(" λÖÃ: x=" + detects1[0].x + ", y=" + detects1[0].y);
- detects1[0].clickRandom();
- sleep(2000);
-
- printl("\n========== ²½Öè2: ʹÓÃfindImages²éÕÒ¶à¸öÄ¿±ê ==========");
- var targetImages = ['ͼɫ769598.cv', 'ͼɫ769599.cv'];
- printl("²éÕÒͼƬÁбí: " + targetImages.join(", "));
- var multiResults = opencv.findImages(targetImages, 0.7, 3000, 1, [0, 0, 1, 1]);
-
- if (multiResults != null) {
- printl("✓ ÕÒµ½ " + multiResults.length + " ¸öÄ¿±ê");
- if (multiResults.length > 0) {
- printl("✓ µã»÷µÚÒ»¸öÄ¿±ê");
- multiResults[0].clickRandom();
- sleep(2000);
- }
-
- printl("\n========== ²½Öè3: ʹÓÃtemplateMatchÔÚÖ¸¶¨ÇøÓò²éÕÒ ==========");
- var image = screen.screenShotFull();
- var mat = image.getMat();
- var templates = ['ͼɫ769598.cv'];
- var region = [0.3, 0.3, 0.7, 0.7];
-
- printl("ÔÚÇøÓò [" + region.join(", ") + "] ÄÚ²éÕÒ");
- printl("˵Ã÷£ºÖ»ÔÚÆÁÄ»ÖÐÑëÇøÓò²éÕÒ£¬Ìá¸ßЧÂÊ");
- var matchResults = opencv.templateMatch(mat, templates, 0.8, region, true);
-
- if (matchResults != null && matchResults.length > 0) {
- printl("✓ ÔÚÖ¸¶¨ÇøÓòÄÚÕÒµ½Ä¿±ê");
- printl(" λÖÃ: x=" + matchResults[0].x + ", y=" + matchResults[0].y);
- matchResults[0].clickRandom();
- } else {
- printl("✗ Ö¸¶¨ÇøÓòÄÚδÕÒµ½Ä¿±ê");
- }
-
- mat.close();
- image.close();
-
- printl("\n========== ²½Öè4: ²éÕÒËùÓÐÏàͬĿ±ê²¢ÅúÁ¿µã»÷ ==========");
- var allDetects = opencv.findImagesEx('ͼɫ769598.cv');
- if (allDetects != null && allDetects.length > 0) {
- printl("✓ ÕÒµ½ " + allDetects.length + " ¸öÏàͬĿ±ê");
- printl("¿ªÊ¼ÅúÁ¿µã»÷...");
- for (var i = 0; i < allDetects.length; i++) {
- printl(" µã»÷Ä¿±ê " + (i + 1) + "/" + allDetects.length);
- allDetects[i].clickRandom();
- sleep(300);
- }
- printl("✓ ÅúÁ¿µã»÷Íê³É");
- } else {
- printl("✗ δÕÒµ½Ä¿±ê");
- }
- } else {
- printl("✗ ¶àͼ²éÕÒʧ°Ü");
- }
- } else {
- printl("✗ δÕÒµ½Ä¿±ê1");
- }
-
- printl("\n========== ×ÛºÏÁ÷³ÌÖ´ÐÐÍê³É ==========");
- } catch (e) {
- printl("×ÛºÏÁ÷³Ì´íÎó: " + e);
- }
- printl("");
- }
- // ========== ʵÓø¨Öúº¯Êý¼¯ºÏ ==========
- // ¸¨Öúº¯Êý1£º°²È«ÕÒͼ£¨´øÖØÊÔ»úÖÆ£©
- function safeFindImage(cvFile, maxRetries) {
- printl("¡¾¸¨Öúº¯Êý¡¿safeFindImage - °²È«ÕÒͼ£¨´øÖØÊÔ»úÖÆ£©");
- for (var retry = 0; retry < maxRetries; retry++) {
- try {
- printl("²éÕÒͼƬ: " + cvFile + " (³¢ÊÔ " + (retry + 1) + "/" + maxRetries + ")");
- var detects = opencv.findImagesEx(cvFile);
-
- if (detects != null && detects.length > 0) {
- printl("✓ ÕÒµ½Ä¿±ê");
- return detects;
- }
-
- if (retry < maxRetries - 1) {
- printl("δÕÒµ½£¬µÈ´ýÖØÊÔ...");
- sleep(1000);
- }
- } catch (error) {
- printl("²éÕÒ³ö´í: " + error);
- if (retry < maxRetries - 1) {
- sleep(2000);
- }
- }
- }
- printl("✗ δÕÒµ½Í¼Æ¬: " + cvFile);
- return null;
- }
- // ¸¨Öúº¯Êý2£ºÅúÁ¿µã»÷ËùÓÐÆ¥ÅäÄ¿±ê
- function clickAllTargets(detects) {
- printl("¡¾¸¨Öúº¯Êý¡¿clickAllTargets - ÅúÁ¿µã»÷ËùÓÐÆ¥ÅäÄ¿±ê");
- if (detects == null || detects.length === 0) {
- printl("ûÓпɵã»÷µÄÄ¿±ê");
- return;
- }
-
- printl("×¼±¸µã»÷ " + detects.length + " ¸öÄ¿±ê");
- for (var i = 0; i < detects.length; i++) {
- printl("µã»÷Ä¿±ê " + (i + 1) + ": x=" + detects[i].x + ", y=" + detects[i].y);
- detects[i].clickRandom();
- sleep(300);
- }
- printl("✓ ËùÓÐÄ¿±êµã»÷Íê³É");
- }
- // ¸¨Öúº¯Êý3£º»ñȡĿ±êÖÐÐĵã
- function getTargetCenter(detect) {
- printl("¡¾¸¨Öúº¯Êý¡¿getTargetCenter - »ñȡĿ±êÖÐÐĵã");
- if (detect == null) {
- return null;
- }
- var center = {
- x: detect.x + detect.width / 2,
- y: detect.y + detect.height / 2
- };
- printl("Ä¿±êÖÐÐĵã: x=" + center.x + ", y=" + center.y);
- return center;
- }
- // ¸¨Öúº¯Êý4£ºÅжÏÄ¿±êÊÇ·ñÔÚÖ¸¶¨ÇøÓòÄÚ
- function isTargetInRegion(detect, region) {
- printl("¡¾¸¨Öúº¯Êý¡¿isTargetInRegion - ÅжÏÄ¿±êÊÇ·ñÔÚÖ¸¶¨ÇøÓòÄÚ");
- if (detect == null) {
- return false;
- }
- var centerX = detect.x + detect.width / 2;
- var centerY = detect.y + detect.height / 2;
- var inRegion = centerX >= region[0] && centerX <= region[2] &&
- centerY >= region[1] && centerY <= region[3];
- printl("Ä¿±êÖÐÐĵã(" + centerX + ", " + centerY + ") " +
- (inRegion ? "ÔÚ" : "²»ÔÚ") + "ÇøÓòÄÚ");
- return inRegion;
- }
- // ¸¨Öúº¯Êý5£º²éÕÒ²¢µã»÷×î½Ó½üÖ¸¶¨×ø±êµÄÄ¿±ê
- function findAndClickNearestTarget(cvFile, targetX, targetY) {
- printl("¡¾¸¨Öúº¯Êý¡¿findAndClickNearestTarget - ²éÕÒ²¢µã»÷×î½Ó½üÖ¸¶¨×ø±êµÄÄ¿±ê");
- try {
- var detects = opencv.findImagesEx(cvFile);
- if (detects == null || detects.length === 0) {
- printl("δÕÒµ½Ä¿±ê");
- return false;
- }
-
- var nearestIndex = 0;
- var minDistance = Number.MAX_VALUE;
-
- for (var i = 0; i < detects.length; i++) {
- var centerX = detects[i].x + detects[i].width / 2;
- var centerY = detects[i].y + detects[i].height / 2;
- var distance = Math.sqrt(Math.pow(centerX - targetX, 2) + Math.pow(centerY - targetY, 2));
-
- if (distance < minDistance) {
- minDistance = distance;
- nearestIndex = i;
- }
- }
-
- printl("ÕÒµ½×î½üµÄÄ¿±ê£¬¾àÀë: " + minDistance.toFixed(2));
- detects[nearestIndex].clickRandom();
- return true;
- } catch (e) {
- printl("´íÎó: " + e);
- return false;
- }
- }
- // ¸¨Öúº¯Êý6£º²éÕÒ²¢µã»÷×îÏàËÆµÄÄ¿±ê
- function findAndClickBestMatch(cvFile, threshold) {
- printl("¡¾¸¨Öúº¯Êý¡¿findAndClickBestMatch - ²éÕÒ²¢µã»÷×îÏàËÆµÄÄ¿±ê");
- try {
- var detects = opencv.findImagesEx(cvFile);
- if (detects == null || detects.length === 0) {
- printl("δÕÒµ½Ä¿±ê");
- return false;
- }
-
- printl("ÕÒµ½ " + detects.length + " ¸öÄ¿±ê");
- printl("µã»÷µÚÒ»¸öÄ¿±ê£¨Í¨³£ÊÇ×îÏàËÆµÄ£©");
- detects[0].clickRandom();
- return true;
- } catch (e) {
- printl("´íÎó: " + e);
- return false;
- }
- }
- // ¸¨Öúº¯Êý7£ºµÈ´ýÄ¿±ê³öÏÖ²¢µã»÷
- function waitForTargetAndClick(cvFile, maxWaitTime) {
- printl("¡¾¸¨Öúº¯Êý¡¿waitForTargetAndClick - µÈ´ýÄ¿±ê³öÏÖ²¢µã»÷");
- printl("×î´óµÈ´ýʱ¼ä: " + maxWaitTime + "ºÁÃë");
-
- var startTime = Date.now();
- while (Date.now() - startTime < maxWaitTime) {
- try {
- var detects = opencv.findImagesEx(cvFile);
- if (detects != null && detects.length > 0) {
- printl("✓ Ä¿±êÒѳöÏÖ£¬µã»÷");
- detects[0].clickRandom();
- return true;
- }
- sleep(500);
- } catch (e) {
- printl("²éÕÒ³ö´í: " + e);
- }
- }
-
- printl("✗ ³¬Ê±£¬Ä¿±êδ³öÏÖ");
- return false;
- }
- // ========== ·½·¨Ê¹Óý¨Òé ==========
- function printUsageTips() {
- printl("========== ÕÒͼ·½·¨Ê¹Óý¨Òé ==========");
- printl("");
- printl("1. ·½·¨Ñ¡Ôñ½¨Ò飺");
- printl(" - µ¥Í¼ÕÒͼ ¡ú opencv.findImagesEx£¨×î¼òµ¥Ö±½Ó£©");
- printl(" - ¶àͼ²éÕÒ ¡ú opencv.findImages£¨Ö§³Ö³¬Ê±ºÍÖÊÁ¿ÉèÖã©");
- printl(" - ×Ô¶¨Ò寥Åä ¡ú opencv.templateMatch£¨×îÁé»î£©");
- printl("");
- printl("2. ÐÔÄÜÓÅ»¯½¨Ò飺");
- printl(" - Ìá¸ßÏàËÆ¶ÈãÐÖµ£¨Èç0.8-0.9£©¿É¼õÉÙÎóÆ¥Åä");
- printl(" - ʹÓÃÇøÓò²ÎÊýÏÞ¶¨²éÕÒ·¶Î§¿ÉÌá¸ßËÙ¶È");
- printl(" - ÉèÖúÏÀíµÄ³¬Ê±Ê±¼ä±ÜÃⳤʱ¼äµÈ´ý");
- printl(" - ¸ù¾ÝÐèÇóÑ¡ÔñºÏÊʵĽØÍ¼ÖÊÁ¿£¨0/1/2£©");
- printl("");
- printl("3. ×ÊÔ´¹ÜÀí½¨Ò飺");
- printl(" - ʹÓÃtemplateMatchʱ¼ÇµÃµ÷ÓÃmat.close()ºÍimage.close()");
- printl(" - ±ÜÃâÔÚÑ»·ÖÐÆµ·±½ØÍ¼£¬¿ÉʹÓÃOCR.lockOCR()Ëø¶¨»º´æ");
- printl("");
- printl("4. ʵս¼¼ÇÉ£º");
- printl(" - ʹÓÃsafeFindImage()ʵÏÖ´øÖØÊÔµÄÕÒͼ");
- printl(" - ʹÓÃclickAllTargets()ÅúÁ¿µã»÷ËùÓÐÄ¿±ê");
- printl(" - ʹÓÃwaitForTargetAndClick()µÈ´ýÄ¿±ê³öÏÖ");
- printl(" - ʹÓÃfindAndClickNearestTarget()µã»÷×î½üµÄÄ¿±ê");
- printl("");
- printl("========== ʹÓý¨Òé½áÊø ==========");
- }
- // ÔËÐÐÖ÷º¯Êý
- main();
- // ´òӡʹÓý¨Òé
- printUsageTips();
¸´ÖÆ´úÂë
|
|