2018-03-05 05:20:29 -05:00
|
|
|
import java.awt.AWTException;
|
|
|
|
import java.awt.Robot;
|
|
|
|
import java.awt.event.KeyEvent;
|
|
|
|
import java.awt.image.BufferedImage;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
public class CameraCalibrator {
|
|
|
|
|
2018-03-14 03:17:51 -04:00
|
|
|
int targetNumberOfDetectedObjects;
|
2018-03-05 05:20:29 -05:00
|
|
|
Robot robot;
|
|
|
|
|
2018-03-14 03:17:51 -04:00
|
|
|
public CameraCalibrator(int targetNumberOfDetectedObjects) throws AWTException {
|
|
|
|
this.targetNumberOfDetectedObjects = targetNumberOfDetectedObjects;
|
2018-03-05 05:20:29 -05:00
|
|
|
robot = new Robot();
|
|
|
|
}
|
|
|
|
|
2018-03-07 00:51:47 -05:00
|
|
|
public void rotateUntilObjectFound(ObjectDetector objectDetector, String objectNameToLookFor) throws Exception {
|
2018-03-21 04:56:48 -04:00
|
|
|
BufferedImage screenCapture = ImageCapturer.captureScreenshotGameWindow();
|
2018-03-05 05:20:29 -05:00
|
|
|
|
2018-03-12 05:54:47 -04:00
|
|
|
ArrayList<DetectedObject> detectedObjects = objectDetector.getObjectsInImage(screenCapture, 0.40);
|
2018-03-05 05:20:29 -05:00
|
|
|
ArrayList<DetectedObject> detectedObjectsToLookFor = objectDetector.getObjectsOfClassInList(detectedObjects, objectNameToLookFor);
|
2018-03-14 03:17:51 -04:00
|
|
|
while (detectedObjectsToLookFor.size() < targetNumberOfDetectedObjects) {
|
2018-03-05 05:20:29 -05:00
|
|
|
randomlyRotateKeyboard();
|
2018-03-21 04:56:48 -04:00
|
|
|
screenCapture = ImageCapturer.captureScreenshotGameWindow();
|
2018-03-12 05:54:47 -04:00
|
|
|
detectedObjects = objectDetector.getObjectsInImage(screenCapture, 0.40);
|
2018-03-05 06:24:11 -05:00
|
|
|
detectedObjectsToLookFor = objectDetector.getObjectsOfClassInList(detectedObjects, objectNameToLookFor);
|
2018-03-05 05:20:29 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void randomlyRotateKeyboard() throws InterruptedException {
|
2018-03-12 05:54:47 -04:00
|
|
|
int keyPressLength = Randomizer.nextGaussianWithinRange(50, 160);
|
2018-03-05 05:20:29 -05:00
|
|
|
robot.keyPress(KeyEvent.VK_LEFT);
|
|
|
|
Thread.sleep(keyPressLength);
|
|
|
|
robot.keyRelease(KeyEvent.VK_LEFT);
|
2018-03-12 05:54:47 -04:00
|
|
|
Thread.sleep(Randomizer.nextGaussianWithinRange(80, 118));
|
2018-03-05 05:20:29 -05:00
|
|
|
}
|
2018-03-27 08:08:19 -04:00
|
|
|
|
|
|
|
public void randomlyShiftView() throws InterruptedException {
|
|
|
|
int keyPressLength = Randomizer.nextGaussianWithinRange(50, 310);
|
|
|
|
robot.keyPress(KeyEvent.VK_LEFT);
|
|
|
|
Thread.sleep(keyPressLength);
|
|
|
|
robot.keyRelease(KeyEvent.VK_LEFT);
|
|
|
|
Thread.sleep(Randomizer.nextGaussianWithinRange(80, 118));
|
|
|
|
}
|
2018-03-05 05:20:29 -05:00
|
|
|
}
|