Finish screen calibrator.

secondmonitor
sigonasr2 4 years ago
parent 62d40b0076
commit 62a3e7f776
  1. 233
      DivaBot/src/sig/Calibrator.java

@ -10,6 +10,9 @@ import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class Calibrator{
public static BufferedImage img;
Calibrator() throws IOException, InterruptedException {
boolean failed=false;
int x = Math.min(MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.x);
@ -33,16 +36,32 @@ public class Calibrator{
(int)Math.floor(x+width*0.03984375d),
(int)Math.floor(y+height*0.30833333333333333333333333333333d));
calibrationline=currentPointer;*/
img = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_5.png"));
failed=CalibrationStage1();
if (failed) {return;}
failed=CalibrationStage2();
if (failed) {return;}
failed=CalibrationStage3();
if (failed) {return;}
failed=CalibrationStage4();
if (failed) {return;}
failed=CalibrationStage5();
if (failed) {return;}
failed=CalibrationStage6();
if (failed) {return;}
failed=CalibrationStage7();
if (failed) {return;}
failed=CalibrationStage8();
if (failed) {return;}
MyRobot.CALIBRATIONSTATUS="First calibration set done: X"+(x-MyRobot.STARTDRAG.x)+" Y"+(y-MyRobot.STARTDRAG.y);
// failed=CalibrationStage3(p);
// if (failed) {return;}
// failed=CalibrationStage4(p);
// if (failed) {return;}
//MyRobot.CALIBRATIONSTATUS="First calibration set done: X"+(x-MyRobot.STARTDRAG.x)+" Y"+(y-MyRobot.STARTDRAG.y);
img = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_5.png"));
}
private boolean CalibrationStage1() throws IOException, InterruptedException {
@ -50,22 +69,22 @@ public class Calibrator{
int MAXTRIES=10000;
MyRobot.CALIBRATIONSTATUS="Calibration Stage 1...";
//ImageIO.write(MYROBOT.getSizedCapture(new Rectangle(x,y,width,height)),"png",new File("capture.png"));
BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(currentScreen.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture.png"));
//BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture.png"));
while (!calibrated&&MAXTRIES>0) {
//Try moving left until the difference is too high or the colors are not right anymore.
MyRobot.STARTDRAG.x-=1;
//BufferedImage pixel = MYROBOT.getSizedCapture(new Rectangle(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,1,1));
BufferedImage miniImg = currentScreen.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,1,1);
ImageIO.write(miniImg,"png",new File("capture_"+System.nanoTime()+".png"));
BufferedImage miniImg = img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,1,1);
//ImageIO.write(miniImg,"png",new File("capture_"+System.nanoTime()+".png"));
Color col = new Color(miniImg.getRGB(0, 0));
//System.out.println("Checking "+col);
System.out.println("Checking "+col);
if (!(col.getRed()>=5&&col.getRed()<=40&&
col.getGreen()>=170&&col.getGreen()<=210&&
col.getBlue()>=205&&col.getBlue()<=250)) {
//This is the max X. Calibration on this side good.
MyRobot.STARTDRAG.x++;
//System.out.println("End at "+MyRobot.STARTDRAG.x);
System.out.println("End at "+MyRobot.STARTDRAG.x);
return false;
}
MAXTRIES--;
@ -81,22 +100,82 @@ public class Calibrator{
MyRobot.CALIBRATIONSTATUS="Calibration Stage 2...";
//ImageIO.write(MYROBOT.getSizedCapture(new Rectangle(x,y,width,height)),"png",new File("capture.png"));
//BufferedImage currentScreen = MYROBOT.getSizedCapture(new Rectangle(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG,height));
BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(currentScreen.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_2.png"));
//BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_2.png"));
while (!calibrated&&MAXTRIES>0) {
//Try moving left until the difference is too high or the colors are not right anymore.
MyRobot.STARTDRAG.y-=1;
//currentScreen.setRGB(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y, new Color(0,0,0).getRGB());
BufferedImage miniImg = currentScreen.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,1,1);
ImageIO.write(miniImg,"png",new File("capture_"+System.nanoTime()+".png"));
BufferedImage miniImg = img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,1,1);
//ImageIO.write(miniImg,"png",new File("capture_2_"+System.nanoTime()+".png"));
Color col = new Color(miniImg.getRGB(0, 0));
//System.out.println("Checking "+col);
if (!(col.getRed()>=5&&col.getRed()<=40&&
System.out.println("Checking "+col);
if (!(col.getRed()>=5&&col.getRed()<=100&&
col.getGreen()>=170&&col.getGreen()<=210&&
col.getBlue()>=205&&col.getBlue()<=250)) {
//This is the max Y. Calibration on this side good.
MyRobot.STARTDRAG.y++;
//System.out.println("End at "+MyRobot.STARTDRAG.y);
System.out.println("End at "+MyRobot.STARTDRAG.y);
return false;
}
MAXTRIES--;
}
MyRobot.CALIBRATIONSTATUS="Calibration failed! Try making the capture region larger and defining it more accurately.";
return true;
}
private boolean CalibrationStage3() throws IOException, InterruptedException {
boolean calibrated=false;
int MAXTRIES=10000;
MyRobot.CALIBRATIONSTATUS="Calibration Stage 3...";
//ImageIO.write(MYROBOT.getSizedCapture(new Rectangle(x,y,width,height)),"png",new File("capture.png"));
//BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_3.png"));
while (!calibrated&&MAXTRIES>0) {
//Try moving left until the difference is too high or the colors are not right anymore.
MyRobot.ENDDRAG.x+=1;
//BufferedImage pixel = MYROBOT.getSizedCapture(new Rectangle(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y,1,1));
BufferedImage miniImg = img.getSubimage(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y,1,1);
//ImageIO.write(miniImg,"png",new File("capture_3_"+System.nanoTime()+".png"));
Color col = new Color(miniImg.getRGB(0, 0));
System.out.println("Checking "+col);
if (!(col.getRed()>=55&&col.getRed()<=90&&
col.getGreen()>=25&&col.getGreen()<=55&&
col.getBlue()>=55&&col.getBlue()<=90)) {
//This is the max X. Calibration on this side good.
MyRobot.ENDDRAG.x--;
System.out.println("End at "+MyRobot.STARTDRAG.x);
return false;
}
MAXTRIES--;
}
MyRobot.CALIBRATIONSTATUS="Calibration failed! Try making the capture region larger and defining it more accurately.";
return true;
}
private boolean CalibrationStage4() throws IOException {
boolean calibrated=false;
int MAXTRIES=10000;
MyRobot.CALIBRATIONSTATUS="Calibration Stage 4...";
//ImageIO.write(MYROBOT.getSizedCapture(new Rectangle(x,y,width,height)),"png",new File("capture.png"));
//BufferedImage currentScreen = MYROBOT.getSizedCapture(new Rectangle(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y,MyRobot.ENDDRAG,height));
//BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_4.png"));
while (!calibrated&&MAXTRIES>0) {
//Try moving left until the difference is too high or the colors are not right anymore.
MyRobot.ENDDRAG.y+=1;
//currentScreen.setRGB(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y, new Color(0,0,0).getRGB());
BufferedImage miniImg = img.getSubimage(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y,1,1);
//ImageIO.write(miniImg,"png",new File("capture_4_"+System.nanoTime()+".png"));
Color col = new Color(miniImg.getRGB(0, 0));
System.out.println("Checking "+col);
if (!(col.getRed()>=55&&col.getRed()<=90&&
col.getGreen()>=25&&col.getGreen()<=55&&
col.getBlue()>=55&&col.getBlue()<=90)) {
//This is the max Y. Calibration on this side good.
MyRobot.ENDDRAG.y--;
System.out.println("End at "+MyRobot.ENDDRAG.y);
return false;
}
MAXTRIES--;
@ -104,4 +183,132 @@ public class Calibrator{
MyRobot.CALIBRATIONSTATUS="Calibration failed! Try making the capture region larger and defining it more accurately.";
return true;
}
private boolean CalibrationStage5() throws IOException, InterruptedException {
boolean calibrated=false;
int MAXTRIES=100;
MyRobot.CALIBRATIONSTATUS="Calibration Stage 5...";
//ImageIO.write(MYROBOT.getSizedCapture(new Rectangle(x,y,width,height)),"png",new File("capture.png"));
//BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture.png"));
while (!calibrated&&MAXTRIES>0) {
//Try moving left until the difference is too high or the colors are not right anymore.
MyRobot.STARTDRAG.x+=1;
//BufferedImage pixel = MYROBOT.getSizedCapture(new Rectangle(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,1,1));
for (int i=0;i<100;i++) {
BufferedImage miniImg = img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y+i,1,1);
//ImageIO.write(miniImg,"png",new File("capture_"+System.nanoTime()+".png"));
Color col = new Color(miniImg.getRGB(0, 0));
System.out.println("Checking "+col);
if ((col.getRed()>=5&&col.getRed()<=40&&
col.getGreen()>=170&&col.getGreen()<=210&&
col.getBlue()>=205&&col.getBlue()<=250)) {
//This is the max X. Calibration on this side good.
MyRobot.STARTDRAG.y=MyRobot.STARTDRAG.y+i;
//MyRobot.STARTDRAG.x--;
System.out.println("End at "+MyRobot.STARTDRAG.x);
return false;
}
}
MAXTRIES--;
}
MyRobot.STARTDRAG.x-=100;
return false;
}
private boolean CalibrationStage6() throws IOException {
boolean calibrated=false;
int MAXTRIES=100;
MyRobot.CALIBRATIONSTATUS="Calibration Stage 6...";
//ImageIO.write(MYROBOT.getSizedCapture(new Rectangle(x,y,width,height)),"png",new File("capture.png"));
//BufferedImage currentScreen = MYROBOT.getSizedCapture(new Rectangle(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG,height));
//BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_2.png"));
while (!calibrated&&MAXTRIES>0) {
//Try moving left until the difference is too high or the colors are not right anymore.
MyRobot.STARTDRAG.y+=1;
//currentScreen.setRGB(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y, new Color(0,0,0).getRGB());
for (int i=0;i<100;i++) {
BufferedImage miniImg = img.getSubimage(MyRobot.STARTDRAG.x+i,MyRobot.STARTDRAG.y,1,1);
//ImageIO.write(miniImg,"png",new File("capture_2_"+System.nanoTime()+".png"));
Color col = new Color(miniImg.getRGB(0, 0));
System.out.println("Checking "+col);
if ((col.getRed()>=5&&col.getRed()<=100&&
col.getGreen()>=170&&col.getGreen()<=210&&
col.getBlue()>=205&&col.getBlue()<=250)) {
MyRobot.STARTDRAG.x=MyRobot.STARTDRAG.x+i;
//This is the max Y. Calibration on this side good.
System.out.println("End at "+MyRobot.STARTDRAG.y);
return false;
}
}
MAXTRIES--;
}
MyRobot.STARTDRAG.y-=100;
return false;
}
private boolean CalibrationStage7() throws IOException, InterruptedException {
boolean calibrated=false;
int MAXTRIES=100;
MyRobot.CALIBRATIONSTATUS="Calibration Stage 7...";
//ImageIO.write(MYROBOT.getSizedCapture(new Rectangle(x,y,width,height)),"png",new File("capture.png"));
//BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_3.png"));
while (!calibrated&&MAXTRIES>0) {
//Try moving left until the difference is too high or the colors are not right anymore.
MyRobot.ENDDRAG.x-=1;
//BufferedImage pixel = MYROBOT.getSizedCapture(new Rectangle(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y,1,1));
for (int i=0;i<100;i++) {
BufferedImage miniImg = img.getSubimage(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y-i,1,1);
//ImageIO.write(miniImg,"png",new File("capture_3_"+System.nanoTime()+".png"));
Color col = new Color(miniImg.getRGB(0, 0));
System.out.println("Checking "+col);
if ((col.getRed()>=55&&col.getRed()<=90&&
col.getGreen()>=25&&col.getGreen()<=55&&
col.getBlue()>=55&&col.getBlue()<=90)) {
//This is the max X. Calibration on this side good.
MyRobot.ENDDRAG.y=MyRobot.ENDDRAG.y-i;
MyRobot.ENDDRAG.x++;
System.out.println("End at "+MyRobot.STARTDRAG.x);
return false;
}
}
MAXTRIES--;
}
MyRobot.ENDDRAG.x+=100;
return false;
}
private boolean CalibrationStage8() throws IOException {
boolean calibrated=false;
int MAXTRIES=100;
MyRobot.CALIBRATIONSTATUS="Calibration Stage 8...";
//ImageIO.write(MYROBOT.getSizedCapture(new Rectangle(x,y,width,height)),"png",new File("capture.png"));
//BufferedImage currentScreen = MYROBOT.getSizedCapture(new Rectangle(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y,MyRobot.ENDDRAG,height));
//BufferedImage currentScreen = MyRobot.MYROBOT.getSizedCapture(new Rectangle(0,0,MyRobot.screenSize.width,MyRobot.screenSize.height));
ImageIO.write(img.getSubimage(MyRobot.STARTDRAG.x,MyRobot.STARTDRAG.y,MyRobot.ENDDRAG.x-MyRobot.STARTDRAG.x,MyRobot.ENDDRAG.y-MyRobot.STARTDRAG.y),"png",new File("capture_4.png"));
while (!calibrated&&MAXTRIES>0) {
//Try moving left until the difference is too high or the colors are not right anymore.
MyRobot.ENDDRAG.y-=1;
//currentScreen.setRGB(MyRobot.ENDDRAG.x,MyRobot.ENDDRAG.y, new Color(0,0,0).getRGB());
for (int i=0;i<100;i++) {
BufferedImage miniImg = img.getSubimage(MyRobot.ENDDRAG.x-i,MyRobot.ENDDRAG.y,1,1);
//ImageIO.write(miniImg,"png",new File("capture_4_"+System.nanoTime()+".png"));
Color col = new Color(miniImg.getRGB(0, 0));
System.out.println("Checking "+col);
if ((col.getRed()>=55&&col.getRed()<=90&&
col.getGreen()>=25&&col.getGreen()<=55&&
col.getBlue()>=55&&col.getBlue()<=90)) {
MyRobot.ENDDRAG.x=MyRobot.ENDDRAG.x-i;
//This is the max Y. Calibration on this side good.
System.out.println("End at "+MyRobot.ENDDRAG.y);
return false;
}
}
MAXTRIES--;
}
MyRobot.ENDDRAG.y+=100;
return false;
}
}

Loading…
Cancel
Save