Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
baracuda
Отправлено: 06 Августа, 2013 - 11:08:34
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013  
Репутация: 1




Есть задача.. определить картинки(номер телефона состоит из 10 цыфр) и записать в текстовый файл.. не могу понять как реализовать. для примера можно взять любое объявление с avito.ru.. заранее спасибо за ответ...
 
 Top
Andrew
Отправлено: 06 Августа, 2013 - 14:20:19
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 118
Дата рег-ции: Июнь 2013  
Откуда: Россия
Репутация: 9




baracuda , Это картинка, врятли кибор сможет ее перевести в текст, надо пользоваться ещё одной программой. Сначала будем искать картинку слева (Значек телефона), далее с отступом в право сохранять картинку(Номер телефона) и работать с ней в программе подобной FineReader. В FineReader (или подобной) нужно будет загрузить эту картинку и обработать её - получиться текст, который мы и сохраним в блокнот Не понял
Как сохранять рассказать не могу, сам не до конца разобрался, времени не было.
P.S. Может я и бред наговорил, но по мне только так Язычок

(Отредактировано автором: 06 Августа, 2013 - 14:22:33)

 
 Top
Kibor
Отправлено: 06 Августа, 2013 - 14:45:55
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Andrew пишет:
Это картинка, врятли кибор сможет ее перевести в текст


Ээх... учишь вас учишь.. Улыбка

Скачать скрипт и изображения для определения телефона на avito.ru
Распаковать на C:

Смысл, ищем рисунок трубки, от него направо уже ищем по 1 цифре в области поиска ограниченной координатами исходя из координат трубки.

Вот сам скрипт. Не оптимальный вариант, но рабочий:
CODE:
int color, xe, ye;//разрешение экрана
getdisplay(color, xe, ye);//Узнать разрешение экрана

int tel_X[1], tel_Y[1];//координаты тел трубки
int X[2], Y[2];//координаты начала и конца рамки где искать цифры
int Cx[10], Cy[10];//координаты найденых цифр
int fl[10];// флаг, 1 если найдена цифра,
int rast_x;//растояние от цифры до начала рамки поиска
int n;
int CIF;
string nom_tel;//телефонный номер
int razmerX[10];//тут размеры рисунков цифр
//Загрузка рисунков
int zn_tel[9][14];loadimage (#zn_tel[0][0], "C:\chs\zn_tel.bmp");//рис тел трубки

//рис цифр
int C_0[7][10];loadimage (#C_0[0][0], "C:\chs\0.bmp");
int C_1[5][10];loadimage (#C_1[0][0], "C:\chs\1.bmp");
int C_2[7][10];loadimage (#C_2[0][0], "C:\chs\2.bmp");
int C_3[7][10];loadimage (#C_3[0][0], "C:\chs\3.bmp");
int C_4[7][10];loadimage (#C_4[0][0], "C:\chs\4.bmp");
int C_5[7][10];loadimage (#C_5[0][0], "C:\chs\5.bmp");
int C_6[7][10];loadimage (#C_6[0][0], "C:\chs\6.bmp");
int C_7[7][9];loadimage (#C_7[0][0], "C:\chs\7.bmp");
int C_8[7][10];loadimage (#C_8[0][0], "C:\chs\8.bmp");
int C_9[7][10];loadimage (#C_9[0][0], "C:\chs\9.bmp");

razmerX[0]=imagewidth(#C_0[0][0]);
razmerX[1]=imagewidth(#C_1[0][0]);
razmerX[2]=imagewidth(#C_2[0][0]);
razmerX[3]=imagewidth(#C_3[0][0]);
razmerX[4]=imagewidth(#C_4[0][0]);
razmerX[5]=imagewidth(#C_5[0][0]);
razmerX[6]=imagewidth(#C_6[0][0]);
razmerX[7]=imagewidth(#C_7[0][0]);
razmerX[8]=imagewidth(#C_8[0][0]);
razmerX[9]=imagewidth(#C_9[0][0]);




if (findimage(1, #zn_tel[0][0], 0, #tel_X[0], #tel_Y[0], 0, 0, xe, ye, -1)==1)//Нашли если рисунок трубки
{
//расчет рамки поиска цифр исходя из координат рисунка трубки
X[0]=tel_X[0]; Y[0]=tel_Y[0];
X[1]=X[0]+170; Y[1]=Y[0]+15;

nom_tel="";

int s=0;
skan:if (s<11)//ищем 11 цифр
{

//ищем по 1 цифре в рамке поиска. записываем координаты
fl[0]=findimage(1, #C_0[0][0], 255, #Cx[0], #Cy[0], X[0], Y[0], X[1], Y[1], -1);
fl[1]=findimage(1, #C_1[0][0], 255, #Cx[1], #Cy[1], X[0], Y[0], X[1], Y[1], -1);
fl[2]=findimage(1, #C_2[0][0], 255, #Cx[2], #Cy[2], X[0], Y[0], X[1], Y[1], -1);
fl[3]=findimage(1, #C_3[0][0], 255, #Cx[3], #Cy[3], X[0], Y[0], X[1], Y[1], -1);
fl[4]=findimage(1, #C_4[0][0], 255, #Cx[4], #Cy[4], X[0], Y[0], X[1], Y[1], -1);
fl[5]=findimage(1, #C_5[0][0], 255, #Cx[5], #Cy[5], X[0], Y[0], X[1], Y[1], -1);
fl[6]=findimage(1, #C_6[0][0], 255, #Cx[6], #Cy[6], X[0], Y[0], X[1], Y[1], -1);
fl[7]=findimage(1, #C_7[0][0], 255, #Cx[7], #Cy[7], X[0], Y[0], X[1], Y[1], -1);
fl[8]=findimage(1, #C_8[0][0], 255, #Cx[8], #Cy[8], X[0], Y[0], X[1], Y[1], -1);
fl[9]=findimage(1, #C_9[0][0], 255, #Cx[9], #Cy[9], X[0], Y[0], X[1], Y[1], -1);

//тут перебираем найденные цифры
rast_x=99999;
n=0;
lop: if(n<10)
{
if (fl[n]==1)//если такая цифра вообще найдена
{
if (Cx[n]-X[0]<rast_x)//проверяем растояние от начала рамки для поиска до цифры
{//если оно меньше уже найденного значит цифра левее. зпаисываем ее и новое растояние
CIF=n;
rast_x=Cx[n]-X[0];
}
}
n++;
goto lop;
}
if (rast_x==99999)goto t;//Если переменная не изменилась. нет цифр
X[0]=X[0]+Cx[CIF]+razmerX[CIF];//расчет нового X для рамки поиска. что бы следующий поиск начинать уже после найденой цифры

nom_tel=nom_tel+format(CIF);//припишем найденую цифру
s++;
goto skan;
}

}
t:;

messagebox(nom_tel);
 
 Top
Andrew
Отправлено: 06 Августа, 2013 - 14:50:59
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 118
Дата рег-ции: Июнь 2013  
Откуда: Россия
Репутация: 9




 Kibor пишет:
Ээх... учишь вас учишь..

Не всем дано мыслить на столько рационально Огорчение
О таком я даже и не подумал...
 
 Top
Kibor
Отправлено: 06 Августа, 2013 - 14:53:53
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 baracuda пишет:
записать в текстовый файл

Записать в файл можно и так:
CODE:
if (fopen ("c:\tel.txt", "a")!=0)
{//если открылся
fwrite(nom_tel);//записываем в файл
fwrite(ENDL);//записываем в файл перевод строки
fclose();//закрываем файл
}


 Andrew пишет:
О таком я даже и не подумал

Так Кибор это среда программирования. Тут надо придумывать алгоритмы.
 
 Top
Andrew
Отправлено: 06 Августа, 2013 - 14:55:30
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 118
Дата рег-ции: Июнь 2013  
Откуда: Россия
Репутация: 9




Kibor , Надо добавить строку для клика по надписи "показать номер", а то ошибка вылетает Огорчение
 
 Top
Kibor
Отправлено: 06 Августа, 2013 - 14:57:31
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Andrew пишет:
Надо добавить строку для клика по надписи "показать номер", а то ошибка вылетает

Ну так я просто набросал скрипт который изначально ориентируется что уже показан номер.
Добавить пару строк и он будет сам показывать...



(Добавление)
Надо добавить проверку и выход с цикла если не найдены больше цифры.
При случае если номер короче.
Сделать это можно примерно так добавив строку:

rast_x=99999;
n=0;
lop: if(n<10)
{
if (fl[n]==1)//если такая цифра вообще найдена
{
if (Cx[n]-X[0]<rast_x)//проверяем растояние от начала рамки для поиска до цифры
{//если оно меньше уже найденного значит цифра левее. зпаисываем ее и новое растояние
CIF=n;
rast_x=Cx[n]-X[0];
}
}
n++;
goto lop;
}

if (rast_x==99999)goto t;//Если переменная не изменилась. нет цифр

X[0]=X[0]+Cx[CIF]+razmerX[CIF];//расчет нового X для рамки поиска. что бы следующий поиск начинать уже после найденой цифры

nom_tel=nom_tel+format(CIF);//припишем найденую цифру
s++;
goto skan;
}

}
t::

messagebox(nom_tel);
 
 Top
baracuda
Отправлено: 06 Августа, 2013 - 15:21:04
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013  
Репутация: 1




Ох сильно.... сейчас буду изучать
 
 Top
Kibor
Отправлено: 06 Августа, 2013 - 16:51:37
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Алгоритм такой:
Находим на экране картинку изображающую трубку. Рассчитываем область поиска телефонных цифр (синяя рамка)
Ищем в области поиска этой рамки все цифры от 0 до 9. Ищем только по одной штуке самые левые.
Потом проверяем расстояние от каждой цифры до рисунка трубки (зеленые стрелки) и находим ближнее. Эта цифра является самой левой.
Приписываем ее к string.
Смещаем область поиска на 1 цифру и повторяем все пока не найдем полный номер.


Тема закрыта!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by