darksell |
Отправлено: 31 Мая, 2020 - 19:46:37
|
Прохожий
Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2018
Репутация: 0
|
Здравствуйте, подскажите пожалуйста, есть скрипт который сканирует определенную область в окне программы, но если поменять разрешение окна или у человека будет другое разрешение экрана разумеется поиск будет уже не там где надо, буду рад если поможете.
readtext (EN, #Text, 4, 1, -1, -1, -1, #Color_Text[0], 1, 0, -1, 1340, 852, 1546, 1027, wind);(Отредактировано автором: 31 Мая, 2020 - 19:48:57) |
|
|
darksell |
Отправлено: 31 Мая, 2020 - 22:48:18
|
Прохожий
Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2018
Репутация: 0
|
Zireael пишет: Цитата: поиск будет уже не там где надо
Сначала найти место где нужно распознать текст, уже потом распознавать относительно найденных координат.
координаты мне известны, можно как-то их оптимизировать под другое разрешение? |
|
|
Remyc |
Отправлено: 12 Июля, 2020 - 13:33:01
|
Участник
Покинул форум
Сообщений всего: 67
Дата рег-ции: Апр. 2019
Репутация: 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);
(Отредактировано автором: 12 Июля, 2020 - 13:35:23) |
|
|
Remyc |
Отправлено: 12 Июля, 2020 - 13:52:16
|
Участник
Покинул форум
Сообщений всего: 67
Дата рег-ции: Апр. 2019
Репутация: 1
|
Kibor пишет: Плохо.
Кстати.. А poteri обнулено где то?
Только в блоке старт.
Zireael пишет: Используйте symbolcorrect чтобы проверить корректность распознавания символов.
Попробую сейчас |
|
|
Zireael |
Отправлено: 12 Июля, 2020 - 13:57:40
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Используйте 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; // возвращаем строку, в которой только корректно распознанные символы
} |
|
|
Remyc |
Отправлено: 12 Июля, 2020 - 14:35:23
|
Участник
Покинул форум
Сообщений всего: 67
Дата рег-ции: Апр. 2019
Репутация: 1
|
Пол часа работы без сбоев.
Выявленная ошибка: Текст с надписью и числом отцентрирован по центру, и чем меньше разрядность цифр, тем больше символов и букв заплывает в зону распознования
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);
В начальную базу добавлены буквы, которые распознаются как "-", и знак ":" (последний для личных нужд, хочу время из формата string = "00:00:00" попробовать перевести секунды в целочисленном формате). |
|
|
|