Macro em Delphi que reconhece imagem na tela. É possível?
09/04/2017
0
Luziraldo Godinho
Posts
10/04/2017
Luziraldo Godinho
int col_KIB, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB; int Image_0_KIB[16][19]; int Image_1_KIB[23][21]; int Image_2_KIB[31][33]; start_(); m_KIB1: findimage_(#Image_0_KIB[0][0], 0, 0, 0, 1, 5, 5, 50, -1, 0, 100, 1, 0, 0, ex_KIB, ey_KIB, #sum_KIB, #x_KIB, #y_KIB); findimage_(#Image_1_KIB[0][0], 0, 0, 0, 1, 5, 5, 100, -1, 0, 100, 1, 0, 0, ex_KIB, ey_KIB, #sum_KIB, #x_KIB, #y_KIB); if (findimage_(#Image_2_KIB[0][0], 0, 0, 0, 0, 0, 0, 1000, -1, 0, 100, 1, 0, 0, ex_KIB, ey_KIB, #sum_KIB, #x_KIB, #y_KIB)>0) goto m_KIB4; else goto m_KIB1; m_KIB4: key_(112, 1, 500, 1000); function start_() { getdisplay(col_KIB, ex_KIB, ey_KIB); load_image_(); pause(1000); } function key_(int k, int m, int p1, int p2) { pause(p1); if (m==1) key(k); if (m==2) keydown(k); if (m==3) keyup(k); pause(p2); } function findimage_(int #Image, int t, int p1, int p2, int m, int xm, int ym, int p3, int fon, int r, int p, int k, int xs, int ys, int xf, int yf, int#sum, int#x, int#y) { int timKIB, sumKIB, xKIB, yKIB; pause(p1); sumKIB=0; if (t!=1) timKIB=gettime(); a: if (r==0 && p==100){sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, -1); if (sum>0) goto e;} else {sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, r, r, r, r, r, r, p, 1, -1); if (sum>0) goto e;} if (t==0) return 0; if (gettime()-timKIB<t){sleep(20); goto a;} return 0; e: sumKIB=sum; xKIB=x[0]; yKIB=y[0]; pause(p2); if (m==1){mouse(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==2){mouse(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==3){mouse(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==4){mousedown(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==5){mousedown(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==6){mousedown(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==7){mouseup(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==8){mouseup(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==9){mouseup(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);} if (m==10){mousemove(xs+xKIB+xm, ys+yKIB+ym); pause(p3);} return sumKIB; } function load_image_() { loadimage (#Image_0_KIB[0][0], "D:\\Nova pasta\\Image_0.bmp"); loadimage (#Image_1_KIB[0][0], "D:\\Nova pasta\\Image_1.bmp"); loadimage (#Image_2_KIB[0][0], "D:\\Nova pasta\\Image_2.bmp"); }
Se parece muito com Delphi. Esse script eu fiz em um ambiente gráfico dentro do programa, fazendo com que o mouse clicasse em alguns botões da calculadora, depois ele retornou esse código fonte citado acima.
Por favor, alguém pode me ajudar? Desde já muito obrigado!
14/04/2017
Luziraldo Godinho
Bom, vou simplificar a pergunta para facilitar a resposta pois, parece estar complicado alguém me ajudar.
Pode o Delphi reconhecer uma imagem na tela?
Através de Componente OCR é possível capturar o texto de uma imagem, o que eu gostaria é que o delphi reconhecesse a imagem na tela, a exemplo do que faz esse programa:
[url:descricao=Первое знакомство с Кибор. Визуальное программирование]https://www.youtube.com/watch?v=gBrFosOHHTI&t=561s[/url]
15/04/2017
Raimundo Pereira
Me corrija se estiver errado, mais o que foi feito no exemplo, não foi selecionar uma determinada área e transformar em outra imagem ?
É isso que você precisa?
Clique aqui para fazer login e interagir na Comunidade :)