Õâ¶Î´úÂëµÄÖ÷Òª¹¦ÄÜÊÇÔÚÒ»¸öÌØ¶¨µÄÆÁÄ»ÉϲéÕÒ²¢µã»÷Ò»¸öÄ¿±êͼÏñ¡£ÏÂÃæÊǶԴúÂëµÄÏêϸ½âÊÍ£º
- ¶¨ÒåÆÁÄ»³ß´ç£º
var SCREEN_WIDTH = 750;
var SCREEN_HEIGHT = 1334;
ÕâÁ½ÐдúÂ붨ÒåÁËÆÁÄ»µÄ¿í¶ÈºÍ¸ß¶È£¬·Ö±ðΪ750ÏñËØºÍ1334ÏñËØ¡£
- ´òÓ¡ÈÕÖ¾£º
printl('ͼɫ232783');
ÕâÐдúÂë´òÓ¡Ò»Ìõ×Ö·û´®¡°Í¼É«232783¡±µ½ÈÕÖ¾ÖС£ÐèҪעÒâµÄÊÇ£¬ÕâÀïʹÓÃÁËprintl
£¬ÔÚ±ê×¼µÄJavaScript¿âÖв¢Ã»ÓÐÕâ¸öº¯Êý£¬¿ÉÄÜÊÇij¸öÌØ¶¨¿âÖеĺ¯Êý¡£¸ù¾ÝÉÏÏÂÎÄ£¬Ëü¿ÉÄÜÊÇÒ»¸öÓÃÓÚ´òÓ¡ÈÕÖ¾µÄº¯Êý¡£
- ²éÕÒÄ¿±êͼÏñ£º
var detects = auto.findImages(['iVBORw0KGgoAAAANSUhEUgAAACEAAAAiCAYAAADRcLDBAAAAAXNSR0IArs4c...',0.8, 5000, 0, 0.01852, 0.00391, 0.88194, 0.31510]);
ÕâÐдúÂëʹÓÃauto.findImages
·½·¨ÔÚÆÁÄ»ÉϲéÕÒÄ¿±êͼÏñ¡£µÚÒ»¸ö²ÎÊýÊÇÒ»¸ö°üº¬Í¼ÏñÊý¾ÝµÄÊý×飬ÕâÀïÖ»ÓÐÒ»ÕÅͼÏñ£¬ÊÇÒÔBase64±àÂëµÄ¡£µÚ¶þ¸ö²ÎÊýÊÇÆ¥ÅäµÄÏàËÆ¶ÈãÐÖµ£¬ÉèÖÃΪ0.8£¬¼´Í¼ÏñµÄÏàËÆ¶ÈÐèÒª´ïµ½80%ÒÔÉϲÅÄܱ»ÈÏΪÊÇÆ¥ÅäµÄ¡£µÚÈý¸ö²ÎÊýÊDzéÕÒͼÏñµÄ×î´óʱ¼ä£¨ÒÔºÁÃëΪµ¥Î»£©£¬ÕâÀïÉèÖÃΪ5000ºÁÃ룬Ҳ¾ÍÊÇ5Ãë¡£µÚËĸö²ÎÊýÊDzéÕÒµÄģʽ£¬ÕâÀïΪ0¡£ºóÃæµÄËĸö²ÎÊýÊDzéÕÒµÄÇøÓò£¬ÓùéÒ»»¯µÄ×ø±ê±íʾ£¬·¶Î§ÊÇ´Ó(0.01852, 0.00391)µ½(0.88194, 0.31510)£¬¼´²éÕÒÇøÓòÊÇ´ÓÆÁÄ»¿í¶ÈµÄ1.852%¡¢ÆÁÄ»¸ß¶ÈµÄ0.391%¿ªÊ¼£¬µ½ÆÁÄ»¿í¶ÈµÄ88.194%¡¢ÆÁÄ»¸ß¶ÈµÄ31.510%½áÊø¡£
- ¼ì²éÊÇ·ñÕÒµ½Ä¿±êͼÏñ£º
if(detects!=null){
ÕâÐдúÂë¼ì²éauto.findImages
·½·¨ÊÇ·ñ³É¹¦ÕÒµ½ÁËÄ¿±êͼÏñ¡£detects
±äÁ¿ÊÇÒ»¸ö°üº¬²éÕÒ½á¹ûµÄ¶ÔÏóÊý×飬Èç¹ûûÓÐÕÒµ½ÈκÎͼÏñ£¬Ôò·µ»Ønull
¡£
- »ñȡĿ±êͼÏñµÄÖÐÐÄ×ø±ê²¢×ª»»ÎªÊµ¼ÊÏñËØ×ø±ê£º
var normX = detects[0].getRect().getCenterX();
var normY = detects[0].getRect().getCenterY();
var absX = Math.round(normX * SCREEN_WIDTH);
var absY = Math.round(normY * SCREEN_HEIGHT);
Èç¹ûÕÒµ½ÁËÄ¿±êͼÏñ£¬´úÂë»á»ñÈ¡µÚÒ»¸öÆ¥ÅäͼÏñµÄ¾ØÐÎÇøÓòµÄÖÐÐÄ×ø±ê£¨¹éÒ»»¯×ø±ê£©£¬È»ºóͨ¹ý½«ÕâЩ¹éÒ»»¯×ø±ê³ËÒÔÆÁÄ»µÄ¿í¶ÈºÍ¸ß¶È£¬×ª»»ÎªÊµ¼ÊµÄÏñËØ×ø±ê£¬²¢Ê¹ÓÃMath.round
º¯Êý½«½á¹ûËÄÉáÎåÈëΪÕûÊý¡£
- Ä£Äâµã»÷Ä¿±êͼÏñ£º
// hid.click(absX, absY);
detects[0].click();
ÕâÐдúÂëÄ£Äâµã»÷ÕÒµ½µÄÄ¿±êͼÏñµÄÖÐÐÄλÖá£×¢Ê͵ôµÄhid.click(absX, absY)
¿ÉÄÜÊÇÁíÒ»ÖÖʵÏÖµã»÷µÄ·½·¨£¬¶ødetects[0].click()
Ö±½ÓʹÓÃÁËÕÒµ½µÄͼÏñ¶ÔÏóµÄ·½·¨À´ÊµÏÖµã»÷¡£
- ´òÓ¡µã»÷ÐÅÏ¢£º
print.log(`| ${new Date().toLocaleString()} | #0 ¡¾µã»÷×ø±ê¡¿ X=${absX} Y=${absY} |`);
Èç¹ûµã»÷³É¹¦£¬´úÂë»á´òÓ¡µ±Ç°µÄÈÕÆÚºÍʱ¼äÒÔ¼°µã»÷µÄ×ø±êÐÅÏ¢¡£
- ´¦ÀíδÕÒµ½Ä¿±êͼÏñµÄÇé¿ö£º
} else {
print.log(`| ${new Date().toLocaleString()} | #0 ¡¾µã»÷ʧ°Ü¡¿Î´ÕÒµ½Ä¿±êͼÏñ`);
}
Èç¹ûauto.findImages
·½·¨Ã»ÓÐÕÒµ½Ä¿±êͼÏñ£¬´úÂë»á´òÓ¡Ò»ÌõÈÕÖ¾ÐÅÏ¢£¬Ìáʾµã»÷ʧ°ÜÊÇÒòΪδÕÒµ½Ä¿±êͼÏñ¡£
×ܽáÀ´Ëµ£¬Õâ¶Î´úÂëµÄÖ÷ҪĿµÄÊÇÔÚÒ»¸öÖ¸¶¨µÄÆÁÄ»ÉϲéÕÒÒ»¸öÌØ¶¨µÄͼÏñ£¬²¢ÔÚÆäÕÒµ½µÄÇé¿öϵã»÷¸ÃͼÏñµÄÖÐÐÄλÖá£Èç¹ûδÕÒµ½Í¼Ïñ£¬Ôò´òÓ¡ÏàÓ¦µÄʧ°ÜÐÅÏ¢
Æ»¹ûµÄ·½·¨ÈçÏ£º
// iPhone SE2 ÆÁÄ»·Ö±æÂÊ£º(750x1334)
const SCREEN_WIDTH = 750;
const SCREEN_HEIGHT = 1334;
// Ö´ÐÐͼÏñʶ±ð
var detects = opencv.findImages([' 🛒 '], 0.8, 5000, 0, [0, 0, 1, 1]);
// ¼ì²éÊÇ·ñÕÒµ½Ä¿±êͼÏñ
if (detects != null) {
// »ñȡĿ±êͼÏñµÄÖÐÐÄ×ø±ê£¨¹éÒ»»¯×ø±ê£©
var normX = detects[0].getRect().getCenterX();
var normY = detects[0].getRect().getCenterY();
// ½«¹éÒ»»¯×ø±êת»»ÎªÊµ¼ÊÏñËØ×ø±ê£¨ËÄÉáÎåÈ룩
var absX = Math.round(normX * SCREEN_WIDTH);
var absY = Math.round(normY * SCREEN_HEIGHT);
// Ä£Äâµã»÷ʵ¼ÊÏñËØ×ø±ê
hid.click(absX, absY);
// ´òÓ¡ÈÕÖ¾
print.log(`| ${new Date().toLocaleString()} | #0 ¡¾µã»÷×ø±ê¡¿ X=${absX} Y=${absY} |`);
} else {
// Èç¹ûδÕÒµ½Ä¿±êͼÏñ£¬´òÓ¡ÌáʾÐÅÏ¢
print.log(`| ${new Date().toLocaleString()} | #0 ¡¾µã»÷ʧ°Ü¡¿Î´ÕÒµ½Ä¿±êͼÏñ`);
}
Õâ¶Î´úÂëµÄÖ÷Òª¹¦ÄÜÊÇÔÚiPhone SE2µÄÆÁÄ»ÉϲéÕÒ²¢µã»÷Ò»¸öÌØ¶¨µÄͼÏñ¡£ÏÂÃæÊǶԴúÂëµÄÏêϸ½âÊÍ£º
- ¶¨ÒåÆÁÄ»³ß´ç£º
const SCREEN_WIDTH = 750;
const SCREEN_HEIGHT = 1334;
ÕâÁ½ÐдúÂ붨ÒåÁËiPhone SE2ÆÁÄ»µÄ¿í¶ÈºÍ¸ß¶È£¬·Ö±ðΪ750ÏñËØºÍ1334ÏñËØ¡£
- Ö´ÐÐͼÏñʶ±ð£º
var detects = opencv.findImages([' 🛒'], 0.8, 5000, 0, [0, 0, 1, 1]);
ÕâÐдúÂëʹÓÃopencv.findImages
·½·¨ÔÚÆÁÄ»ÉϲéÕÒÄ¿±êͼÏñ¡£µÚÒ»¸ö²ÎÊýÊÇÒ»¸ö°üº¬Í¼ÏñÊý¾ÝµÄÊý×飬ÕâÀïÖ»ÓÐÒ»ÕÅͼÏñ£¬ÊÇÒÔ×Ö·û´®¡°🛒¡±±íʾµÄ¡£µ«Êµ¼ÊÉÏ£¬ÕâÀïµÄ¡°🛒¡±Ó¦¸ÃÊÇÒ»¸öBase64±àÂëµÄͼÏñ×Ö·û´®£¬ÒòΪopencv.findImages
ͨ³£ÐèҪͼÏñµÄ¶þ½øÖÆÊý¾Ý»òBase64±àÂëµÄÊý¾ÝÀ´Ê¶±ðͼÏñ¡£µÚ¶þ¸ö²ÎÊýÊÇÆ¥ÅäµÄÏàËÆ¶ÈãÐÖµ£¬ÉèÖÃΪ0.8£¬¼´Í¼ÏñµÄÏàËÆ¶ÈÐèÒª´ïµ½80%ÒÔÉϲÅÄܱ»ÈÏΪÊÇÆ¥ÅäµÄ¡£µÚÈý¸ö²ÎÊýÊDzéÕÒͼÏñµÄ×î´óʱ¼ä£¨ÒÔºÁÃëΪµ¥Î»£©£¬ÕâÀïÉèÖÃΪ5000ºÁÃ룬Ҳ¾ÍÊÇ5Ãë¡£µÚËĸö²ÎÊýÊDzéÕÒµÄģʽ£¬ÕâÀïΪ0¡£×îºóÒ»¸ö²ÎÊýÊÇÒ»¸öÊý×飬±íʾ²éÕÒµÄÇøÓò£¬ÓùéÒ»»¯µÄ×ø±ê±íʾ£¬·¶Î§ÊÇ´Ó(0, 0)µ½(1, 1)£¬¼´Õû¸öÆÁÄ»¡£
- ¼ì²éÊÇ·ñÕÒµ½Ä¿±êͼÏñ£º
if (detects != null) {
ÕâÐдúÂë¼ì²éopencv.findImages
·½·¨ÊÇ·ñ³É¹¦ÕÒµ½ÁËÄ¿±êͼÏñ¡£detects
±äÁ¿ÊÇÒ»¸ö°üº¬²éÕÒ½á¹ûµÄ¶ÔÏóÊý×飬Èç¹ûûÓÐÕÒµ½ÈκÎͼÏñ£¬Ôò·µ»Ønull
¡£
- »ñȡĿ±êͼÏñµÄÖÐÐÄ×ø±ê²¢×ª»»ÎªÊµ¼ÊÏñËØ×ø±ê£º
// »ñȡĿ±êͼÏñµÄÖÐÐÄ×ø±ê£¨¹éÒ»»¯×ø±ê£©
var normX = detects[0].getRect().getCenterX();
var normY = detects[0].getRect().getCenterY();
// ½«¹éÒ»»¯×ø±êת»»ÎªÊµ¼ÊÏñËØ×ø±ê£¨ËÄÉáÎåÈ룩
var absX = Math.round(normX * SCREEN_WIDTH);
var absY = Math.round(normY * SCREEN_HEIGHT);
Èç¹ûÕÒµ½ÁËÄ¿±êͼÏñ£¬´úÂë»á»ñÈ¡µÚÒ»¸öÆ¥ÅäͼÏñµÄ¾ØÐÎÇøÓòµÄÖÐÐÄ×ø±ê£¨¹éÒ»»¯×ø±ê£©£¬È»ºóͨ¹ý½«ÕâЩ¹éÒ»»¯×ø±ê³ËÒÔÆÁÄ»µÄ¿í¶ÈºÍ¸ß¶È£¬×ª»»ÎªÊµ¼ÊµÄÏñËØ×ø±ê£¬²¢Ê¹ÓÃMath.round
º¯Êý½«½á¹ûËÄÉáÎåÈëΪÕûÊý¡£
- Ä£Äâµã»÷Ä¿±êͼÏñ£º
// Ä£Äâµã»÷ʵ¼ÊÏñËØ×ø±ê
hid.click(absX, absY);
ÕâÐдúÂëÄ£Äâµã»÷ÕÒµ½µÄÄ¿±êͼÏñµÄÖÐÐÄλÖá£hid.click(absX, absY)
ÊÇÒ»¸öÓÃÓÚÄ£Äâµã»÷Ö¸¶¨ÏñËØ×ø±êµÄº¯Êý¡£
- ´òÓ¡µã»÷ÐÅÏ¢£º
// ´òÓ¡ÈÕÖ¾
print.log(`| ${new Date().toLocaleString()} | #0 ¡¾µã»÷×ø±ê¡¿ X=${absX} Y=${absY} |`);
Èç¹ûµã»÷³É¹¦£¬´úÂë»á´òÓ¡µ±Ç°µÄÈÕÆÚºÍʱ¼äÒÔ¼°µã»÷µÄ×ø±êÐÅÏ¢¡£
- ´¦ÀíδÕÒµ½Ä¿±êͼÏñµÄÇé¿ö£º
} else {
// Èç¹ûδÕÒµ½Ä¿±êͼÏñ£¬´òÓ¡ÌáʾÐÅÏ¢
print.log(`| ${new Date().toLocaleString()} | #0 ¡¾µã»÷ʧ°Ü¡¿Î´ÕÒµ½Ä¿±êͼÏñ`);
}
Èç¹ûopencv.findImages
·½·¨Ã»ÓÐÕÒµ½Ä¿±êͼÏñ£¬´úÂë»á´òÓ¡Ò»ÌõÈÕÖ¾ÐÅÏ¢£¬Ìáʾµã»÷ʧ°ÜÊÇÒòΪδÕÒµ½Ä¿±êͼÏñ¡£
×ܽáÀ´Ëµ£¬Õâ¶Î´úÂëµÄÖ÷ҪĿµÄÊÇÔÚiPhone SE2µÄÆÁÄ»ÉϲéÕÒÒ»¸öÌØ¶¨µÄͼÏñ£¬²¢ÔÚÆäÕÒµ½µÄÇé¿öϵã»÷¸ÃͼÏñµÄÖÐÐÄλÖá£Èç¹ûδÕÒµ½Í¼Ïñ£¬Ôò´òÓ¡ÏàÓ¦µÄʧ°ÜÐÅÏ¢