Pessoal…
Tem como passar uma imagem para preto e branco?
Pq eu tenho um programa que procura certa coisa na tela, e se achar, ele a move para tar lugar, com 1 robot…
Mas existe ela de várias cores… Por isso o ideal seria passar ela para preto e branco, em vez de comparar com várias imagens…
Postei uma parte de meu código para vcs verem (DE UMA OLHADA NA LINHA 106):
[code]import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.lang.Thread.State;
import javax.imageio.ImageIO;
public class PegaGps {
private BufferedImage ball1
private BufferedImage img1gp, img2gp, img3gp, img4gp, img5gp, img6gp, img7gp, img8gp
private BufferedImage[] variasimagens;
private Robot robot;
private int padLeft, padTop, w, h;
private boolean flag;
private TSThread t = new TSThread();
public void setflag(boolean m) {
flag = m;
if (flag) {
if (!t.getState().equals(State.TIMED_WAITING)) {
System.out.println("Esperando 5 segundos...");
try {
Thread.sleep(5000);
System.out.println("On");
} catch (InterruptedException e) {
}
t = new TSThread();
}
t.start();
}
}
public PegaGps() {
padLeft = 1114;
padTop = 732;
w = 35;
h = 35;
try {
img1 = ImageIO.read(new File("Imagens", "image1gp.png"));
img2 = ImageIO.read(new File("Imagens", "image2gp.png"));
img3 = ImageIO.read(new File("Imagens", "image3gp.png"));
img4 = ImageIO.read(new File("Imagens", "image4gp.png"));
img5 = ImageIO.read(new File("Imagens", "image5gp.png"));
img6 = ImageIO.read(new File("Imagens", "image6gp.png"));
img7 = ImageIO.read(new File("Imagens", "image7gp.png"));
img8 = ImageIO.read(new File("Imagens", "image8gp.png"));
} catch (IOException e) {
e.printStackTrace();
}
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
BufferedImage[] listagps = new BufferedImage[] { img1gp, img2gp,
img3gp, img4gp, img5gp, img6gp, img7gp, img8gp };
this.variasimagens = listagps;
}
class TSThread extends Thread {
boolean result;
public void run() {
while (flag) {
ball1 = robot.createScreenCapture(new Rectangle(padLeft,
padTop, w, h));
for (int z = 0; z < variasimagens.length; z++) {
result = compareImage(variasimagens[z], ball1); //compara as imagens
if (result == true) {
// faz um tanto de coisa com o robot, movendo, clicando, delay
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private boolean compareImage(BufferedImage image1, BufferedImage image2) {
if (image1.getWidth() != image2.getWidth()
|| image1.getHeight() != image2.getHeight()) {
return false;
}
//COMPARA VARIOS PIXELS DAS IMAGENS, QUERIA QUE A COR NÃO FOSSE IMPORTANTE… PASSAR TUDO PARA PRETO E BRANCO.
for (int x = 5; x < image1.getWidth() - 5; x++) {
for (int y = 5; y < image1.getHeight() - 5; y++) {
if (image1.getRGB(x, y) != image2.getRGB(x, y)) {
return false;
}
}
}
return true;
}
}
[/code]