Здравствуйте, подскажите пожалуйста, есть скрипт который сканирует определенную область в окне программы, но если поменять разрешение окна или у человека будет другое разрешение экрана разумеется поиск будет уже не там где надо, буду рад если поможете.
readtext (EN, #Text, 4, 1, -1, -1, -1, #Color_Text[0], 1, 0, -1, 1340, 852, 1546, 1027, wind);
181. darksell - 31 Мая, 2020 - 11:46:37 - перейти к сообщению
182. Zireael - 31 Мая, 2020 - 12:04:29 - перейти к сообщению
Цитата:
поиск будет уже не там где надо
Сначала найти место где нужно распознать текст, уже потом распознавать относительно найденных координат.
183. darksell - 31 Мая, 2020 - 14:48:18 - перейти к сообщению
Zireael пишет:
Цитата:
поиск будет уже не там где надо
Сначала найти место где нужно распознать текст, уже потом распознавать относительно найденных координат.
координаты мне известны, можно как-то их оптимизировать под другое разрешение?
184. Kibor - 31 Мая, 2020 - 14:52:13 - перейти к сообщению
darksell пишет:
координаты мне известны, можно как-то их оптимизировать под другое разрешение?
Надо поставить автоматизацию в условия одни. Что бы все запускали в оконном и бот устанавливал определенный размер окна.
185. Remyc - 12 Июля, 2020 - 05:33:01 - перейти к сообщению
Проблема такого характера, необходимо распознавать числа и показывать их сумму нарастающим итогом. База обучена цифры, в настройке распознавания проблем нет, все корректно распознается, но при вставке в визуальный редактор возникает следующие проблемы:
1. Если появляется "0" он распознается, как "620"
2. Если проявляется любое число из 3-х цифр, например "790", распознает как "88790"
В чем может быть проблема? число из 4-х цифр распознается на ура, при этом в настройке распознавания нет проблем и числами из 1-й и трех цифр.
Часть кода, которая использует распознавание текста
1. Если появляется "0" он распознается, как "620"
2. Если проявляется любое число из 3-х цифр, например "790", распознает как "88790"
В чем может быть проблема? число из 4-х цифр распознается на ура, при этом в настройке распознавания нет проблем и числами из 1-й и трех цифр.
Часть кода, которая использует распознавание текста
CODE:
readtext(NUM, #text_KIB, 8, 1, 100, -1, -1, -1, -1, 0, -1, 483, 238, 537, 258, w_KIB);
kill++;
regexreplace(-1, #text_KIB, text_KIB, " ", "");
messagebox(text_KIB);
poteri=poteri+formatsn(text_KIB);
textout(0, 10, 0, "Убито: " +format(kill), 1);
textout(1, 10, 17, "потери: " +format(poteri), 1);
readtext(NUM, #text_KIB, 8, 1, 100, -1, -1, -1, -1, 0, -1, 483, 238, 537, 258, w_KIB);
kill++;
regexreplace(-1, #text_KIB, text_KIB, " ", "");
messagebox(text_KIB);
poteri=poteri+formatsn(text_KIB);
textout(0, 10, 0, "Убито: " +format(kill), 1);
textout(1, 10, 17, "потери: " +format(poteri), 1);
186. Zireael - 12 Июля, 2020 - 05:37:51 - перейти к сообщению
Цитата:
1. Если появляется "0" он распознается, как "620"
2. Если проявляется любое число из 3-х цифр, например "790", распознает как "88790"
2. Если проявляется любое число из 3-х цифр, например "790", распознает как "88790"
Используйте symbolcorrect чтобы проверить корректность распознавания символов.
187. Kibor - 12 Июля, 2020 - 05:40:21 - перейти к сообщению
Плохо.
Кстати.. А poteri обнулено где то?
Кстати.. А poteri обнулено где то?
188. Remyc - 12 Июля, 2020 - 05:52:16 - перейти к сообщению
Kibor пишет:
Плохо.
Кстати.. А poteri обнулено где то?
Кстати.. А poteri обнулено где то?
Только в блоке старт.
Zireael пишет:
Используйте symbolcorrect чтобы проверить корректность распознавания символов.
Попробую сейчас
189. Zireael - 12 Июля, 2020 - 05:57:40 - перейти к сообщению
Цитата:
Используйте symbolcorrect чтобы проверить корректность распознавания символов.
Попробую сейчас
Попробую сейчас
Примерно так:
CODE:
string Text;
loadsymbolbase ("D:\Kibor2\basetext.sib");
readtext (NUM, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 372, 222, 456, 261, -1);
messagebox (Text); // распознанный текст
// передаём в функцию распознанный текст и оценку корректности от 0 до 1
Text = correct(Text, 0.5);
messagebox(Text); // текст, после проверки корректности
function correct(string text, double correct_symbol)
{
char c[999];
string temp="";
int size_text = size(text);
strcpy(#c[0], text); // скопировать строку в массив
for(int i=0; i<size_text; i++) // цикл для всех символов в строке
{
if(symbolcorrect(i) >= correct_symbol)temp=temp+c[i]; // если символ корректен, записывает его в строку
}
return temp; // возвращаем строку, в которой только корректно распознанные символы
}
loadsymbolbase ("D:\Kibor2\basetext.sib");
readtext (NUM, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 372, 222, 456, 261, -1);
messagebox (Text); // распознанный текст
// передаём в функцию распознанный текст и оценку корректности от 0 до 1
Text = correct(Text, 0.5);
messagebox(Text); // текст, после проверки корректности
function correct(string text, double correct_symbol)
{
char c[999];
string temp="";
int size_text = size(text);
strcpy(#c[0], text); // скопировать строку в массив
for(int i=0; i<size_text; i++) // цикл для всех символов в строке
{
if(symbolcorrect(i) >= correct_symbol)temp=temp+c[i]; // если символ корректен, записывает его в строку
}
return temp; // возвращаем строку, в которой только корректно распознанные символы
}
190. Remyc - 12 Июля, 2020 - 06:35:23 - перейти к сообщению
Пол часа работы без сбоев.
Выявленная ошибка: Текст с надписью и числом отцентрирован по центру, и чем меньше разрядность цифр, тем больше символов и букв заплывает в зону распознования
Zireael , спасибо, очень помог
исправил так, может кому пригодится:
В начальную базу добавлены буквы, которые распознаются как "-", и знак ":" (последний для личных нужд, хочу время из формата string = "00:00:00" попробовать перевести секунды в целочисленном формате).
Выявленная ошибка: Текст с надписью и числом отцентрирован по центру, и чем меньше разрядность цифр, тем больше символов и букв заплывает в зону распознования
Zireael , спасибо, очень помог
исправил так, может кому пригодится:
CODE:
kill++;
regexreplace(-1, #text_KIB, text_KIB, " ", "");
regexreplace(-1, #text_KIB, text_KIB, "[^\d]", "");
messagebox(text_KIB);
poteri=poteri+formatsn(text_KIB);
textout(0, 10, 0, "Óáèòî: " +format(kill), 1);
textout(1, 10, 17, "ïîòåðè: " +format(poteri), 1);
kill++;
regexreplace(-1, #text_KIB, text_KIB, " ", "");
regexreplace(-1, #text_KIB, text_KIB, "[^\d]", "");
messagebox(text_KIB);
poteri=poteri+formatsn(text_KIB);
textout(0, 10, 0, "Óáèòî: " +format(kill), 1);
textout(1, 10, 17, "ïîòåðè: " +format(poteri), 1);
В начальную базу добавлены буквы, которые распознаются как "-", и знак ":" (последний для личных нужд, хочу время из формата string = "00:00:00" попробовать перевести секунды в целочисленном формате).