Kostick |
Отправлено: 30 Января, 2022 - 20:58:26
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Ilya001 пишет: findimage сам же всё это делает, зачем еще сравнивать с другим изображением?
Да, немного не так выразился.
Сначала идет поиск изображения с помощью findimage, и функция его находит. С помощью savescreen я дополнительно сохраняю ту область, в которой было найдено изображение по пути "C:\Трофеи2.bmp", чтобы удостоверится, что оно верное. Но оно может не верным, потому что в findimage забита большая разбежность цветов. Поэтому я хотел сделать дополнительную проверку и сравнить это изображение с сохраненным заранее ("C:\Трофеи.bmp", и если они совпадают, то только тогда выполнять действие.
Но согласен, проще просто получше настроить разбежность цветов. А то получается масло масленное. |
|
|
Rundown |
Отправлено: 31 Января, 2022 - 13:04:21
|
Прохожий
Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2022
Репутация: 0
|
Здравствуйте!
Нужен совет, тема похожая. Но тут капча. Ну, сразу к делу.
Алгоритм:
1. Ищем на экране "Continue", кликаем. Появляются картинки. Вверху шаблон, внизу список.
2. Вверху выделяем шаблон, копируем.
3. Снизу ищем по шаблону, кликаем.
Проблема на шаге 3. Немогу подсунуть в findimage координаты по Y, с которых надо начинать искать, что бы неискался шаблон.
Или как лучше поступить? Заранее спасибо...
img (Отобразить)[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Тут обеденены обе фазы изображения.
Code (Отобразить)int Image[111][111];
int XX, YY;
//loop(1)
//{
loadimage (#Image[0][0], "C:\Users\User\Pictures\kibort-captcha\1 Continue.bmp" ;
pause (100);
findimage (1, #Image[0][0], 16777215, #XX, #YY, 0, 0, 1920, 1080, 3, 3, 3, 3, 3, 3, 77, 1, -1);
pause (100);
saveimage(#Image[0][0], "C:\Users\User\Pictures\kibort-captcha\out_Continue.bmp" ;
pause (100);
enablerealmouse(10, 10, 3, 3);
mousemove (XX-1, YY-1);
pause (100);
mousemove(XX+37, YY+11);
pause (100);
mousedown(LEFT, XX+37, YY+11);
pause (100);
mouseup(LEFT, XX+37, YY+11);
pause (200);
disablerealmouse();
savescreen("C:\Users\User\Pictures\kibort-captcha\out_imgScreen.bmp", XX-36, YY, 1920, 1080, -1);
mousemove (XX+22, YY-56);
screen (#Image[0][0], XX+23, YY-55, XX+53, YY-25, -1);
pause (100);
saveimage(#Image[0][0], "C:\Users\User\Pictures\kibort-captcha\out_screen_Pattern.bmp" ;
pause (100);
//loadimage (#Image[0][0], "C:\Users\User\Pictures\kibort-captcha\out_screen_Pattern.bmp" ;
//pause (500);
mousemove(XX+37, YY+11);
pause (100);
findimage (1, #Image[0][0], 16777215, #XX, #YY, 0, 0, 1920, 1080, 3, 3, 3, 3, 3, 3, 77, 1, -1); // Проблема тут
//mousemove (X[2], Y[2]);
enablerealmouse(10, 10, 3, 3);
mousemove (XX-1, YY-1);
pause (200);
mousedown(LEFT, XX+14, YY+14);
pause (200);
mouseup(LEFT, XX+14, YY+14);
pause (200);
disablerealmouse();
//} |
|
|
Zireael |
Отправлено: 31 Января, 2022 - 13:44:13
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Или как лучше поступить?
CODE:int Image[99][99];
loadimage (#Image[0][0], "D:\Kibor2\Continue.bmp"); // изображение кнопки Continue
int Screen[99][99];
int PosContinueX, PosContinueY;
int PosX, PosY;
int r = 10;
int p = 77;
if(findimage (1, #Image[0][0], -1, #PosContinueX, #PosContinueY, 0, 0, 1920, 1080, r,r,r,r,r,r,p, 1, -1)) // поиск Continue
{
mousemove(PosContinueX, PosContinueY); // тут клик вместо mousemove
pause(500);
mousemove(PosContinueX+20, PosContinueY-55);
pause(500);
mousemove(PosContinueX+35, PosContinueY-40);
pause(500);
screen (#Screen[0][0], PosContinueX+20, PosContinueY-55, PosContinueX+35, PosContinueY-40, -1); // сохранить в памяти изображение шаблона
saveimage(#Screen[0][0], "D:\11111.bmp");
mousemove(PosContinueX - 50, PosContinueY);
pause(500);
mousemove(PosContinueX + 110, PosContinueY + 50);
pause(500);
//поиск шаблона
if(findimage (1, #Screen[0][0], -1, #PosX, #PosY, PosContinueX - 50, PosContinueY, PosContinueX + 110, PosContinueY + 50, r,r,r,r,r,r,p, 1, -1))
{
mousemove(PosContinueX - 50 + PosX, PosContinueY + PosY); // тут клик вместо mousemove
pause(500);
}
else messagebox("Изображение не найдено");
}
else messagebox("Continue не найдено");
Все mousemove можно убрать, они только для наглядности.
Суть скрипта: найти кнопку Continue, относительно неё сохранить в памяти шаблон искомого изображения, найти шаблон на экране относительно кнопки Continue.(Отредактировано автором: 31 Января, 2022 - 13:44:37) |
|
|
Kostick |
Отправлено: 31 Января, 2022 - 13:44:30
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Rundown пишет: Здравствуйте!
Нужен совет, тема похожая. Но тут капча. Ну, сразу к делу.
Алгоритм:
1. Ищем на экране "Continue", кликаем. Появляются картинки. Вверху шаблон, внизу список.
2. Вверху выделяем шаблон, копируем.
3. Снизу ищем по шаблону, кликаем.
Проблема на шаге 3. Немогу подсунуть в findimage координаты по Y, с которых надо начинать искать, что бы неискался шаблон.
Или как лучше поступить? Заранее спасибо...
img (Отобразить)[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Тут обеденены обе фазы изображения.
Code (Отобразить)int Image[111][111];
int XX, YY;
//loop(1)
//{
loadimage (#Image[0][0], "C:\Users\User\Pictures\kibort-captcha\1 Continue.bmp" ;
pause (100);
findimage (1, #Image[0][0], 16777215, #XX, #YY, 0, 0, 1920, 1080, 3, 3, 3, 3, 3, 3, 77, 1, -1);
pause (100);
saveimage(#Image[0][0], "C:\Users\User\Pictures\kibort-captcha\out_Continue.bmp" ;
pause (100);
enablerealmouse(10, 10, 3, 3);
mousemove (XX-1, YY-1);
pause (100);
mousemove(XX+37, YY+11);
pause (100);
mousedown(LEFT, XX+37, YY+11);
pause (100);
mouseup(LEFT, XX+37, YY+11);
pause (200);
disablerealmouse();
savescreen("C:\Users\User\Pictures\kibort-captcha\out_imgScreen.bmp", XX-36, YY, 1920, 1080, -1);
mousemove (XX+22, YY-56);
screen (#Image[0][0], XX+23, YY-55, XX+53, YY-25, -1);
pause (100);
saveimage(#Image[0][0], "C:\Users\User\Pictures\kibort-captcha\out_screen_Pattern.bmp" ;
pause (100);
//loadimage (#Image[0][0], "C:\Users\User\Pictures\kibort-captcha\out_screen_Pattern.bmp" ;
//pause (500);
mousemove(XX+37, YY+11);
pause (100);
findimage (1, #Image[0][0], 16777215, #XX, #YY, 0, 0, 1920, 1080, 3, 3, 3, 3, 3, 3, 77, 1, -1); // Проблема тут
//mousemove (X[2], Y[2]);
enablerealmouse(10, 10, 3, 3);
mousemove (XX-1, YY-1);
pause (200);
mousedown(LEFT, XX+14, YY+14);
pause (200);
mouseup(LEFT, XX+14, YY+14);
pause (200);
disablerealmouse();
//}
Я пользую визуальным редактором, поэтому мне проще предложить, как сделать в нем. В нем у функции findimage есть Массив X и Массив Y, в которых записаны координаты найденного изображения с верхнего левого угла изображения.
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Я у себя, если нужно кликнуть где-то относительно найденного изображения, ввожу в блок mouse вот так:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Но может у кого-то есть еще идеи. |
|
|
Kostick |
Отправлено: 05 Февраля, 2022 - 21:42:32
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Ilya001 пишет: Kostick пишет: [img](для просмотра ссылки Вам необходимо авторизоваться) /img]
а где тут клик?
Клик будет на 9 пикселей ниже и правее найденного изображения, если начинать с верхнего левого угла |
|
|
|