PowerMiner/src/cascadeTrainingImageCollect...

95 lines
3.3 KiB
Java

import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class cascadeTrainingImageCollector {
public String imageOutputDirectory;
public String imageInputDirectory;
public Robot robot;
public int imageDimension;
public cascadeTrainingImageCollector(String imageOutputDirectory) throws AWTException {
this.imageOutputDirectory = imageOutputDirectory;
this.robot = new Robot();
this.imageDimension = 40;
}
public void captureEveryNSeconds(int n) throws IOException, InterruptedException {
for (int i = 0; i < 60; i++) {
captureScreenshotAroundMouse(i);
System.out.println(i);
Thread.sleep(n * 1000);
}
}
public void captureWindowEveryNMilliseconds(int n) throws InterruptedException, IOException {
for (int i = 0; i < 1000; i++) {
captureScreenshotGameWindow(i);
System.out.println(i);
//System.out.println("Created image: " + getImageName(i));
Thread.sleep(n * 1000);
}
}
private void captureScreenshotGameWindow(int counter) throws IOException {
Rectangle area = new Rectangle(103, 85, 510, 330);
BufferedImage image = robot.createScreenCapture(area);
ImageIO.write(image, "jpg", new File(getImageName(counter)));
}
private void captureScreenshotAroundMouse(int counter) throws IOException {
BufferedImage image = robot.createScreenCapture(getRectangleAroundCursor());
ImageIO.write(image, "jpg", new File(getImageName(counter)));
}
private Rectangle getRectangleAroundCursor() {
Point cursorPoint = getCurrentCursorPoint();
return new Rectangle(cursorPoint.x - imageDimension / 2, cursorPoint.y - imageDimension / 2, imageDimension, imageDimension);
}
private Point getCurrentCursorPoint() {
return MouseInfo.getPointerInfo().getLocation();
}
private String getImageName(int counter) {
return imageOutputDirectory + "screenshot" + counter + ".jpg";
}
private void resizeImagesInDirectory() throws IOException {
File folder = new File("/home/dpapp/Desktop/RunescapeAIPics/CascadeTraining/Testing/");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
resizeImage(listOfFiles[i], i);
System.out.println("Cropped " + listOfFiles[i].getName());
}
}
}
private void resizeImage(File imageFile, int counter) throws IOException {
BufferedImage screenshot = ImageIO.read(imageFile);
//Rectangle resizeRectangle = new Rectangle(103, 85, 510, 330);
BufferedImage resizedImage = screenshot.getSubimage(103, 85, 510, 330);
ImageIO.write(resizedImage, "jpg", new File(getImageName(counter)));
}
public static void main(String[] args) throws Exception
{
System.out.println("Starting image collection...");
cascadeTrainingImageCollector imageCollector = new cascadeTrainingImageCollector("/home/dpapp/Desktop/RunescapeAIPics/CascadeTraining/CoalNegative/");
//imageCollector.resizeImagesInDirectory();
imageCollector.captureWindowEveryNMilliseconds(5);;
//cascadeTrainingImageCollector imageCollector = new cascadeTrainingImageCollector("/home/dpapp/Desktop/RunescapeAIPics/CascadeTraining/Testing/");
//imageCollector.captureWindowEveryNMilliseconds(1);
}
}