Java: Extraer imágenes JPEG de un video MP4 con Java y OpenCV

Hola amigos, comparto con ustedes un pequeño programa que permite extraer imágenes JPG de un video en formato MP4.
Para tal fin se usan las librerías javaCV, javaCPP y sus correspondientes dependencias.


Clase Read.java



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber.Exception;
import org.bytedeco.javacv.Java2DFrameConverter;
import org.bytedeco.javacv.OpenCVFrameConverter;



/**
 *
 * @author imagineanddo.com
 */

public class Read{
    public static void main(String []args) throws IOException, Exception
    {
        FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber("C:\\DATA\\5.mp4");
        frameGrabber.start();
        Frame i;
        OpenCVFrameConverter.ToIplImage converterToIplImage = new OpenCVFrameConverter.ToIplImage();
        try {
        frameGrabber.setFrameNumber(3);//puede ser cualquier frame
            Frame frame = frameGrabber.grabImage();
            System.out.println(frame);
            IplImage image = converterToIplImage.convert(frame);
            BufferedImage bi = IplImageToBufferedImage(image);
            File outputfile = new File("C:\\DATA\\image.jpg");
            ImageIO.write(bi, "jpg", outputfile);
            frameGrabber.stop();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public static BufferedImage IplImageToBufferedImage(IplImage src) {
        OpenCVFrameConverter.ToIplImage grabberConverter = new OpenCVFrameConverter.ToIplImage();
        Java2DFrameConverter paintConverter = new Java2DFrameConverter();
        Frame frame = grabberConverter.convert(src);
        return paintConverter.getBufferedImage(frame,1);
    }  
 
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Les dejo los archivos utilizados en este ejemplo:


Read.java

Librerias

5.mp4


Publicar un comentario

Entradas populares de este blog

Java - Ejemplo de como consumir un Web Service

Java - Ejemplo de como crear un Web Service

Java: Primera aplicación web con Eclipse