RLPark 1.0.0
Reinforcement Learning Framework in Java

ImageLogger.java

Go to the documentation of this file.
00001 package rlpark.plugin.opencv.utils;
00002 
00003 import java.io.File;
00004 import java.io.IOException;
00005 
00006 import zephyr.plugin.core.api.internal.monitoring.fileloggers.TimedFileLogger;
00007 import zephyr.plugin.core.api.monitoring.abstracts.Monitored;
00008 import zephyr.plugin.core.api.monitoring.annotations.Monitor;
00009 import zephyr.plugin.core.api.synchronization.Chrono;
00010 
00011 import com.googlecode.javacv.cpp.opencv_core;
00012 import com.googlecode.javacv.cpp.opencv_core.CvSize;
00013 import com.googlecode.javacv.cpp.opencv_core.IplImage;
00014 import com.googlecode.javacv.cpp.opencv_highgui;
00015 import com.googlecode.javacv.cpp.opencv_imgproc;
00016 
00017 @SuppressWarnings("restriction")
00018 public class ImageLogger {
00019   private final File folder;
00020   @Monitor
00021   private int imageCounter = 0;
00022   private final Chrono chrono = new Chrono();
00023   private final double period;
00024   private final TimedFileLogger logger;
00025   private final CvSize size;
00026   private IplImage resizedImage;
00027 
00028   public ImageLogger(String path, CvSize size, double period) {
00029     folder = new File(path);
00030     if (!folder.isDirectory())
00031       folder.mkdirs();
00032     System.out.println("Saving images in " + folder.getAbsolutePath());
00033     this.period = period;
00034     this.size = size;
00035     logger = createLogger();
00036   }
00037 
00038   private TimedFileLogger createLogger() {
00039     String loggerFilepath = folder.getAbsolutePath() + "/log.logtxt";
00040     try {
00041       final TimedFileLogger logger = new TimedFileLogger(loggerFilepath);
00042       logger.add("ImageCounter", new Monitored() {
00043         @SuppressWarnings("synthetic-access")
00044         @Override
00045         public double monitoredValue() {
00046           return imageCounter;
00047         }
00048       });
00049       return logger;
00050     } catch (IOException e) {
00051       e.printStackTrace();
00052     }
00053     return null;
00054   }
00055 
00056   public void saveImage(IplImage image) {
00057     if (chrono.getCurrentChrono() < period)
00058       return;
00059     if (resizedImage == null)
00060       resizedImage = opencv_core.cvCreateImage(size, image.depth(), image.nChannels());
00061     String filename = String.format("%s/image%09d.jpg", folder.getAbsolutePath(), imageCounter);
00062     opencv_imgproc.cvResize(image, resizedImage, opencv_imgproc.CV_INTER_LINEAR);
00063     opencv_highgui.cvSaveImage(filename, resizedImage);
00064     logger.update();
00065     chrono.start();
00066     imageCounter++;
00067   }
00068 
00069   public void dispose() {
00070     if (resizedImage != null)
00071       opencv_core.cvReleaseImage(resizedImage);
00072     logger.close();
00073   }
00074 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark