|
|
°²×¿½Å±¾Ê¾Àýʵʱ½ØÍ¼ÅжÏÒ³Ãæ±ä»¯
- // ʵʱ½ØÍ¼ÅжÏÒ³Ãæ±ä»¯Ê¾Àý
- // ¼¼Êõ½»Á÷QQȺ711841924Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639
- // ²ÉÓÃÈ«ÆÁ¸ß²ÉÑùÂÊÏñËØ¶Ô±È£¬¼ä¸ô5Ãë¼ì²â
- /**
- * ½ØÈ¡µ±Ç°ÆÁÄ»²¢±£´æÎªMat¶ÔÏó
- * @returns {Object} Mat¶ÔÏó£¬Ê§°Ü·µ»Ønull
- */
- function captureScreen() {
- try {
- // »ñÈ¡ÆÁÄ»³ß´ç
- var screenWidth = 1080;
- var screenHeight = 1920;
-
- if (typeof screen !== 'undefined') {
- if (typeof screen.getScreenWidth === 'function') {
- screenWidth = screen.getScreenWidth();
- screenHeight = screen.getScreenHeight();
- }
- }
-
- printl("½ØÈ¡ÆÁÄ»: " + screenWidth + "x" + screenHeight);
- var screenshot = screen.screenShot(screenWidth, screenHeight, 100);
- return screenshot.getMat();
- } catch (e) {
- printl("½ØÍ¼Ê§°Ü: " + String(e));
- return null;
- }
- }
- /**
- * ±È½ÏÁ½¸öMat¶ÔÏóµÄÏàËÆ¶È£¨Í¨¹ýÏñËØµã²ÉÑù£©
- * @param {Object} mat1 - µÚÒ»¸öMat¶ÔÏó
- * @param {Object} mat2 - µÚ¶þ¸öMat¶ÔÏó
- * @param {number} sampleRate - ²ÉÑùÂÊ(0-1)£¬Ä¬ÈÏ0.2±íʾ²ÉÑù20%µÄÏñËØ
- * @returns {number} ÏàËÆ¶È(0-1)£¬1±íʾÍêÈ«Ïàͬ
- */
- function compareMats(mat1, mat2, sampleRate) {
- if (!mat1 || !mat2) {
- printl("ERR: Mat¶ÔÏóΪ¿Õ£¬ÎÞ·¨±È½Ï");
- return 0;
- }
-
- try {
- sampleRate = sampleRate || 0.2; // Ìá¸ßĬÈϲÉÑùÂʵ½20%
-
- var width1 = mat1.width();
- var height1 = mat1.height();
- var width2 = mat2.width();
- var height2 = mat2.height();
-
- printl("ͼƬ1³ß´ç: " + width1 + "x" + height1);
- printl("ͼƬ2³ß´ç: " + width2 + "x" + height2);
-
- // ³ß´ç²»Í¬Ö±½ÓÈÏΪ²»Í¬
- if (width1 !== width2 || height1 !== height2) {
- printl("⚠️ ͼƬ³ß´ç²»Í¬£¬Åж¨ÎªÒ³ÃæÒѱ仯");
- return 0;
- }
-
- // ¼ÆËã²ÉÑù²½³¤
- var stepX = Math.floor(1 / sampleRate);
- var stepY = Math.floor(1 / sampleRate);
-
- var totalPixels = 0;
- var samePixels = 0;
- var changedPixels = 0;
-
- // ²ÉÑù±È½ÏÏñËØµã
- for (var y = 0; y < height1; y += stepY) {
- for (var x = 0; x < width1; x += stepX) {
- try {
- var pixel1 = mat1.get(y, x);
- var pixel2 = mat2.get(y, x);
-
- if (pixel1 && pixel2) {
- totalPixels++;
-
- // ±È½ÏRGBÖµ£¨½µµÍÈݲÌá¸ßÁéÃô¶È£©
- var diff = Math.abs(pixel1[0] - pixel2[0]) +
- Math.abs(pixel1[1] - pixel2[1]) +
- Math.abs(pixel1[2] - pixel2[2]);
-
- // ½µµÍãÐÖµ´Ó30µ½10£¬¸üÁéÃô
- if (diff < 10) {
- samePixels++;
- } else {
- changedPixels++;
- }
- }
- } catch (e) {
- // ºöÂÔµ¥¸öÏñËØ¶ÁÈ¡´íÎó
- }
- }
- }
-
- if (totalPixels === 0) {
- printl("ERR: ûÓпɱȽϵÄÏñËØµã");
- return 0;
- }
-
- var similarity = samePixels / totalPixels;
- var changeRate = changedPixels / totalPixels;
-
- printl("²ÉÑùÏñËØ×ÜÊý: " + totalPixels);
- printl("ÏàËÆÏñËØÊý: " + samePixels);
- printl("±ä»¯ÏñËØÊý: " + changedPixels);
- printl("±ä»¯ÂÊ: " + (changeRate * 100).toFixed(2) + "%");
- printl("ÏàËÆ¶È: " + (similarity * 100).toFixed(2) + "%");
-
- return similarity;
- } catch (e) {
- printl("ERR: ±È½ÏMat¶ÔÏó´íÎó: " + String(e));
- return 0;
- }
- }
- /**
- * »ù´¡Ò³Ãæ±ä»¯¼ì²â - ͨ¹ýÁ½´Î½ØÍ¼¶Ô±È
- * @param {number} interval - Á½´Î½ØÍ¼¼ä¸ôʱ¼ä£¨Ã룩
- * @param {number} threshold - ÏàËÆ¶ÈãÐÖµ(0-1)£¬µÍÓÚ´ËÖµÈÏÎªÒ³Ãæ±ä»¯£¬Ä¬ÈÏ0.90£¨¸üÃô¸Ð£©
- * @returns {boolean} Ò³ÃæÊÇ·ñ·¢Éú±ä»¯£¨true=±ä»¯£¬false=δ±ä»¯£©
- */
- function isPageChangedByScreenshot(interval, threshold) {
- printl("=== ¿ªÊ¼½ØÍ¼¶Ô±ÈÒ³Ãæ±ä»¯¼ì²â ===");
- printl("½ØÍ¼¼ä¸ô: " + interval + "Ãë");
- printl("ÏàËÆ¶ÈãÐÖµ: " + (threshold * 100).toFixed(1) + "%");
- printl("💡 Ìáʾ: ÇëÔÚ" + interval + "ÃëÄÚÇл»Ò³Ãæ»ò¹ö¶¯ÆÁÄ»");
-
- try {
- // µÚÒ»´Î½ØÍ¼
- printl("\n📸 ½øÐеÚ1´Î½ØÍ¼...");
- var mat1 = captureScreen();
- if (!mat1) {
- printl("ERR: µÚ1´Î½ØÍ¼Ê§°Ü");
- return false;
- }
- printl("✅ µÚ1´Î½ØÍ¼³É¹¦");
-
- // µÈ´ýÖ¸¶¨Ê±¼ä
- printl("\n⏰ µÈ´ý " + interval + " Ãë...");
- printl("👉 ÇëÔÚ´ËÆÚ¼äÇл»Ò³Ãæ¡¢¹ö¶¯ÆÁÄ»»ò¸Ä±ä½çÃæÄÚÈÝ");
- sleep.second(interval);
-
- // µÚ¶þ´Î½ØÍ¼
- printl("\n📸 ½øÐеÚ2´Î½ØÍ¼...");
- var mat2 = captureScreen();
- if (!mat2) {
- printl("ERR: µÚ2´Î½ØÍ¼Ê§°Ü");
- mat1 = null; // ÊÍ·Å×ÊÔ´
- return false;
- }
- printl("✅ µÚ2´Î½ØÍ¼³É¹¦");
-
- // ±È½ÏÁ½´Î½ØÍ¼
- printl("\n🔍 ¿ªÊ¼±È½ÏÁ½´Î½ØÍ¼...");
- var similarity = compareMats(mat1, mat2, 0.2); // Ìá¸ß²ÉÑùÂʵ½20%
-
- // ÊÍ·ÅMat×ÊÔ´
- mat1 = null;
- mat2 = null;
-
- // ÅжÏÊÇ·ñ±ä»¯£¨½µµÍãÐÖµµ½0.90£¬¸üÃô¸Ð£©
- threshold = threshold || 0.90;
- var changed = (similarity < threshold);
-
- printl("\n=== ¼ì²â½á¹û ===");
- printl("ÏàËÆ¶È: " + (similarity * 100).toFixed(2) + "%");
- printl("ãÐÖµ: " + (threshold * 100).toFixed(1) + "%");
-
- if (changed) {
- printl("✅✅✅ ½áÂÛ: Ò³ÃæÒѱ仯£¡¼ì²âµ½ " + ((1 - similarity) * 100).toFixed(2) + "% µÄ²îÒì");
- } else {
- printl("⭕ ½áÂÛ: Ò³ÃæÎ´±ä»¯£¨²îÒì̫С£¬¿ÉÄÜÐèÒª¸ü´ó¸Ä¶¯£©");
- }
-
- return changed;
- } catch (e) {
- printl("ERR: ½ØÍ¼¶Ô±ÈÒ³Ãæ±ä»¯¼ì²â´íÎó: " + String(e));
- return false;
- }
- }
- /**
- * ÑÝÊ¾Ò³Ãæ±ä»¯¼ì²â·½·¨
- */
- function demonstratePageChangeDetection() {
- printl("=== AIWROK ʵʱ½ØÍ¼Ò³Ãæ±ä»¯¼ì²â£¨×î׼ȷ°æ£©===");
-
- // °²È«»ñÈ¡APP°æ±¾
- try {
- if (typeof app !== 'undefined' && app && typeof app.version !== 'undefined') {
- printl("APP°æ±¾: " + app.version);
- } else {
- printl("APP°æ±¾: δ֪");
- }
- } catch (e) {
- printl("»ñÈ¡APP°æ±¾Ê§°Ü: " + String(e));
- }
-
- // »ñÈ¡ÆÁÄ»³ß´ç
- var screenWidth = 1080;
- var screenHeight = 1920;
-
- try {
- if (typeof screen !== 'undefined' && screen) {
- if (typeof screen.getScreenWidth === 'function') {
- screenWidth = screen.getScreenWidth();
- screenHeight = screen.getScreenHeight();
- }
- }
- } catch (e) {
- printl("»ñÈ¡ÆÁÄ»³ß´çʧ°Ü£¬Ê¹ÓÃĬÈÏÖµ: " + String(e));
- }
-
- printl("É豸·Ö±æÂÊ: " + screenWidth + "x" + screenHeight);
- printl("\n📌 ¼ì²â·½·¨: È«ÆÁ¸ß²ÉÑùÂÊÏñËØ¶Ô±È");
- printl("📌 ¼ì²â¼ä¸ô: 5Ãë");
- printl("📌 ÁéÃô¶È: ¸ß£¨²ÉÑùÂÊ25%£¬ÑÕÉ«ãÐÖµ10£¬ÏàËÆ¶ÈãÐÖµ90%£©");
-
- // Ö´ÐÐÒ³Ãæ±ä»¯¼ì²â
- printl("\n=== ¿ªÊ¼Ò³Ãæ±ä»¯¼ì²â ===");
- printl("⚠️⚠️⚠️ ÖØÒªÌáʾ ⚠️⚠️⚠️");
- printl("ÔÚ½ÓÏÂÀ´µÄ5ÃëÄÚ£¬ÇëÎñ±Ø£º");
- printl(" 1. Çл»µ½ÁíÒ»¸öÒ³Ãæ/Ó¦ÓÃ");
- printl(" 2. »òÕß´ó·ù¹ö¶¯µ±Ç°Ò³Ãæ");
- printl(" 3. »òÕßµ¯³ö¶Ô»°¿ò/²Ëµ¥");
- printl("·ñÔò½«¼ì²â²»µ½±ä»¯£¡");
-
- var changed = isPageChangedByScreenshot(5, 0.90);
-
- printl("\n=== ×îÖÕ¼ì²â½á¹û ===");
- if (changed) {
- printl("✅✅✅ Ò³ÃæÒѱ仯£¡¼ì²â³É¹¦£¡");
- } else {
- printl("⭕ Ò³ÃæÎ´±ä»¯");
- printl("💡 Èç¹ûȷʵÓб仯µ«Î´¼ì²âµ½£¬Çë¼ì²é:");
- printl(" 1. ÊÇ·ñÔÚ5ÃëÄÚ½øÐÐÁËÃ÷ÏÔµÄÒ³ÃæÇл»");
- printl(" 2. ±ä»¯·ù¶ÈÊÇ·ñ×ã¹»´ó");
- printl(" 3. ¿ÉÒÔ³¢ÊÔ½µµÍãÐÖµ£¬Èç: isPageChangedByScreenshot(5, 0.85)");
- }
-
- printl("\n=== ¼ì²âÍê³É ===");
- }
- /**
- * ÔËÐÐÒ³Ãæ±ä»¯¼ì²âʾÀý
- */
- function runPageChangeDetectionExample() {
- printl("¿ªÊ¼Ö´ÐÐʵʱ½ØÍ¼Ò³Ãæ±ä»¯¼ì²âʾÀý");
- printl("⚠️ ±¾Ê¾ÀýÍêÈ«»ùÓÚʵʱ½ØÍ¼£¬²»ÐèÒªÈκÎCVÎļþ");
- printl("⚠️ ²ÉÓÃ×î׼ȷµÄÈ«ÆÁ¸ß²ÉÑùÂʶԱȷ½·¨");
- printl("⚠️ ¼ì²â¼ä¸ô: 5Ãë\n");
-
- // ÑÝÊ¾Ò³Ãæ±ä»¯¼ì²â
- demonstratePageChangeDetection();
-
- printl("\nÒ³Ãæ±ä»¯¼ì²âʾÀýÖ´ÐÐÍê±Ï");
- }
- // ÔËÐÐʾÀý
- runPageChangeDetectionExample();
¸´ÖÆ´úÂë
|
|