Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Делаете скрин. Загоняете его в массив int
Проходитесь по массиву и закрашиваете углы что выделены красным в белый цвет, что бы получился квадрат.
Отдаете этот квадрат на распознавание.
code (Отобразить)CODE:int coord[4]={724, 189, 862, 315} // координаты буквы, левый верхний угол и правый нижний
int color = 16053492; // цвет фона буквы
int r=5; // разбежность цвета
int image[1920][1080]; // массив для скрина
int x[99999], y[99999]; // массивы для координат findcolor
// поиск фона буквы
int count = findcolor(sizearray(x), #x[0], #y[0], coord[0], coord[1], coord[2], coord[3], color, r,r,r,r,r,r, -1);
//messagebox(count); // найдено пикселей
if(count)
{
// считаем прямоугольник, в котором находится буква
int radius = (x[count-1] - x[0]) / 2; // радиус окружности, в которой находится буква
int screen_sx = x[0] + coord[0];
int screen_sy = y[0] + coord[1] - radius;
int screen_ex = x[count-1] + coord[0];
int screen_ey = y[0] + coord[1] + radius;
screen(#image[0][0], screen_sx, screen_sy, screen_ex, screen_ey, -1); // скрин буквы
paint(); // закрашивание всех пикселей, которые за пределами окружности, в котором буква
// сохранить скрин, можно убрать
saveimage(#image[0][0], "C:\11111.bmp", 0, 0, screen_ex-screen_sx, screen_ey-screen_sy);
start("C:\11111.bmp");
//////
// дальше readtext, последним параметром передавать указатель на изображение
// readtext(нужные параметры, #image[0][0]);
}
function paint()
{
int width = screen_ex-screen_sx;
int height = screen_ey-screen_sy;
for(int i=0; i<width;i++)
{
for(int j=0; j<height;j++)
{
int distance = sqrt(pow(radius-i, 2) + pow(radius-j, 2)) + 5;
if(distance > radius)image[i][j]=color;
}
}
} |