Эксперт
Покинул форум
Сообщений всего: 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); |