code: package resa.evaluation.tools;
  
  import org.bytedeco.javacpp.opencv_core;
  import org.bytedeco.javacpp.opencv_highgui;
  
  import static org.bytedeco.javacpp.opencv_core.cvSize;
  import static org.bytedeco.javacpp.opencv_highgui.cvSaveImage;
  import static org.bytedeco.javacpp.opencv_imgproc.cvResize;
  
  /**
   * Created by ding on 14/10/18.
   */
  public class Video2Image {
  
      public static void main(String[] args) {
          opencv_highgui.VideoCapture capture = new opencv_highgui.VideoCapture(args[0]);
          int i = 0;
          opencv_core.IplImage img = null;
          int max = Integer.parseInt(args[2]);
          if (max <= 0) {
              max = Integer.MAX_VALUE;
          }
          opencv_core.Mat mat = new opencv_core.Mat();
          while (i++ < max && capture.read(mat)) {
              opencv_core.IplImage source = mat.asIplImage();
              if (img == null) {
                  opencv_core.CvSize size = cvSize(source.width() / 2, source.height() / 2);
                  img = opencv_core.IplImage.create(size, source.depth(), source.nChannels());
              }
              cvResize(source, img);
              cvSaveImage(String.format(args[1] + "/%05d.jpg", i), img);
          }
          capture.release();
          System.out.println("done, got " + i + " images");
      }
  }
  