Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Поиск перевернутого изображения, поиск цифр в нужном порядке в движении.

Страниц (1): [1]
 

1. Sleemer - 30 Января, 2020 - 04:12:37 - перейти к сообщению
Здравствуй Кибор, столкнулся с такой задачей...
Проверка Капчи...
Дано 4 картинки, они перевернуты и имеют разный порядок...т.е.
1,2,3,4...2,3,1,4 и т.д. а так же могут иметь разный градус поворота.
Проблему решил таким методом...
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Можно ли упростить?, или ускорить процесс...
Так же есть Вторая проблема...
В определенной области бегают цифры в хаотичном порядке, за короткий промежуток времени на них надо нажать в нужном порядке.
Определение по динамике не работает, так как динамично абсолютно все...
По колличеству пикселей, так же не возможно...."Я так думаю" так как цвет одинаковый...А определение по картинке, просто напросто не успевает за движением капчи...
Поиск движущегося объекта по наличию его цветов в Кибор


Движения чуть быстрее, могут двигаться, в любые стороны, картинка меньше, одного цвета, единственное что выделяется это Цифры...
Подскажи, как бороться с такой проблемой
2. Zireael - 30 Января, 2020 - 05:16:00 - перейти к сообщению
Скрины или видео как всё это выглядит.
3. Sleemer - 30 Января, 2020 - 08:08:50 - перейти к сообщению
 Zireael пишет:
Скрины или видео как всё это выглядит.

Это пример капчи

Надо привести всегда к такому варианту

С этим с ясмог разобраться методом выше, но если есть вариант проще, был бы рад...получается немного лишних проверок и задержек...
Так же то самое видео с проблемой.
Видео
4. Zireael - 30 Января, 2020 - 08:53:53 - перейти к сообщению
 Цитата:
Надо привести всегда к такому варианту

Перевернуть и поменять местами?
Картинки только такие или еще какие-то бывают?

На счёт двигающихся цифр.
1. findheapcolor искать скученность красных пикселей, так найдём примерную область где находится цифра.
2. readtext, распознать цифру, в настройках указать что цвет цифры белый, остальное фон. Если число нужное, то нажимаем на него и переходим снова к findheapcolor. Если число не то, значит распознаём число в следующей области.
Возможно быстрее будет если сделать скрин, использовать findheapcolor и readtext на скрине.
5. Sleemer - 30 Января, 2020 - 09:04:29 - перейти к сообщению
 Zireael пишет:
Перевернуть и поменять местами?

Только повернуть, поворачивает нажатием на картинку...исходя из моего метода, он каждый раз проверяет картинку, и делает клик, проверил каждую клик...повторил
и так пока не выставил поочередно все 4 картинки...Секунд 15-30...в целом не так уж и много...

 Zireael пишет:
На счёт двигающихся цифр.
1. findheapcolor искать скученность красных пикселей, так найдём примерную область где находится цифра.
2. readtext, распознать цифру, в настройках указать что цвет цифры белый, остальное фон. Если число нужное, то нажимаем на него и переходим снова к findheapcolor. Если число не то, значит распознаём число в следующей области.
Возможно быстрее будет если сделать скрин, использовать findheapcolor и readtext на скрине.


Тут же куда сложнее сделали, если нажать не на ту цифру, то мы получаем ошибку...
Так же пока мы распознаем картинку, текст....они уже сдвигаются, и мы просто не успеваем прожать.....возможно мой метод был очень медленным....
Но даже тут....я не могу разобраться как нажимать на найденную букву... Что такое? Изначально пытался по скученности цветов искать, но оказалось бестолково...
6. Zireael - 30 Января, 2020 - 09:57:37 - перейти к сообщению
 Цитата:
просто не успеваем прожать

Наведёт курсор на первую найденную цифру (проверял на видео):
CODE:
int r=20; // отклонение в цвете, от 0 до 255, много не ставить дольше искать будет
int color[1]= {11263} // красный цвет вокруг цифры
int kol[1]= {100}; // сколько минимум пикселей
int coord[4]={0, 0, 1920, 1080} // область поиска
int x[3], y[3];//Тут координаты найденные

loop()
{
int k=findheapcolor(3, #color[0], #kol[0], 1, 1, #x[0], #y[0], 70, 70, 70, 70, coord[0], coord[1], coord[2], coord[3] ,r,r,r,r,r,r, -1);
if(k>0)
{
mousemove(coord[0] + x[0], coord[1] + y[0] + 30); // навести курсор на первую найденную
textbkcolor (255, 65280);
textout(0, 0, 0, "Найдено", 1);
}
else
{
textbkcolor (0, 255);
textout(0, 0, 0, "Не найдено", 1);
}
sleep(1);
}

Если в findheapcolor использовать привязку к окну и уменьшить область поиска, то будет быстрее искать. Распознавание цифры не займет много времени, если правильно указать параметры.
Вообще можно делать 2 поиска с небольшим интервалом, узнать направление движения цифры и делать клик со смещением с учётом направления движения.
(Добавление)
 Цитата:
Только повернуть

Примерно так:
code (Отобразить)

Powered by ExBB FM 1.0 Final