Mezclar Imagenes en Java con Opencv – Tutorial

Mezclar Imagenes en Java con Opencv – Tutorial

En este Articulo veremos como mezclar 2 imagenes en Java con OpenCV, lo haremos mediante el metodo addWeighted de OpenCV el cual nos permite fusionar dos imagenes aplicando valores alfa y beta para despues guardar el resultado un una imagen. Mostraremos el resultado en una interfaz a traves de SWING, el trabajo fue realizado utilizando Netbeans.

Requerimientos

Para comenzar a mezclar imagenes en java con OpenCV necesitamos saber algunas cosas antes.

  • Las imagenes deben tener el mismo tamaño.
  • Las imagenes deben ser del mismo formato.

Nuestro Proyecto constara de 2 clases, una que realizara el proceso de lectura-procesamiento de las imagenes y otra que se encargara de mostrar en ventana la imagen resultante.

Mezclar Imagenes en Java con Opencv 1
y utlizaremos estas 2 imagenes de las cuales crearemos una fusion.
Mezclar Imagenes en Java con Opencv 2Mezclar Imagenes en Java con Opencv 3

 


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy

 

 

 

 

Ahora vamos al codigo.

[note]Damos por hecho que tiene configurado todo para poder hacer uso de las funciones de OpenCV, sino date una vuelta por el blog para hacerlo.
[/note]

Main


public class Main {
    static double alfa=0.5,beta;
    static Mat src1,src2,dst;
    static URL img1_url,img2_url;
    static String ruta1="/ruta/a/tuimagen/paisaje1.jpg",
            ruta2="/ruta/a/tuimagen/paisaje2.jpg";

    public static void main(String args[]){
        System.out.println(Core.NATIVE_LIBRARY_NAME);
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        src1 = Highgui.imread(ruta1,Highgui.CV_LOAD_IMAGE_COLOR);
        src2 = Highgui.imread(ruta2,Highgui.CV_LOAD_IMAGE_COLOR);

        if( src1.empty() ) { System.out.println("Error Cargando imagen1 n");}
        if( src2.empty() ) { System.out.println("Error Cargando imagen2 n");}

        dst = new Mat();
        beta = 1.0 - alfa;
        Core.addWeighted(src1, alfa, src2, beta, 0.0, dst);

        //Interfaz Grafica
        Ventana v = new Ventana();
        //Establecemos Imagen
        v.setImage(convertir(dst));
    }

    private static Image convertir(Mat imagen) {
        MatOfByte matOfByte = new MatOfByte();
        Highgui.imencode(".jpg", imagen, matOfByte); 

        byte[] byteArray = matOfByte.toArray();
        BufferedImage bufImage = null;

        try {

            InputStream in = new ByteArrayInputStream(byteArray);
            bufImage = ImageIO.read(in);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (Image)bufImage;
    }
}

Ventana


public class Ventana extends JFrame{
    JPanel panel;
    JLabel etiqueta;

    public Ventana(){
        setTitle("Mezclar Imagenes en Java con OpenCV");
        setLocation(400, 200);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(600,400);
        setResizable(true);
        setVisible(true);
        panel = new JPanel();
        panel.setLayout(new BorderLayout());
        etiqueta = new JLabel();
        panel.add(etiqueta);

        getContentPane().add(panel);
    }

    public void setImage(Image imagen){
        panel.removeAll();

        ImageIcon icon = new ImageIcon(imagen.getScaledInstance(etiqueta.getWidth(), etiqueta.getHeight(), Image.SCALE_SMOOTH));
        etiqueta.setIcon(icon);

        panel.add(etiqueta);
        panel.updateUI();
    }
}

mezclar imagenes en Java con opencv resultado

Video

Visto – Mezclar Imagenes con Java y Opencv

Clic para valorar esta información
[Total: 0 Promedio: 0]