Cargar y Mostrar una Imagen con OpenCV en Java

Cargar y Mostrar una Imagen con OpenCV en Java

En este Articulo veremos como Cargar y Mostrar una Imagen con OpenCV en Java y lo veremos mediante un sencillo ejemplo para que nos sirva de base para futuros proyectos en los que normalmente necesitaremos mostrar una imagen al usuario. La libreria para la interfaz grafica que usaremos para mostrar la imagen sera SWING, como dijimos antes usaremos netbeans pero igualmente puedes utilizar cualquier otro como eclipse donde ya hemos realizado la instalacion de opencv en el siguiente articulo aqui, los puntos importantes que trataremos seran: leer y cargar una imagen de nuestro disco duro a nuestro programa, convertir una imagen Mat de opencv a Image de AWT, mostrar una imagen en una ventana grafica. Veamos como cargar y mostrar una imagen con opencv en java y netbeans, Comencemos…

Requerimientos

Desarrollo

Lo primero sera crear un nuevo proyecto en Netbeans para ello vamos a FILE -> NEW PROJECT -> JAVA -> JAVA APPLICATION, la nombramos como queramos y terminamos.
Agregamos la libreria de OpenCV en nuestro proyecto.
En este proyecto utilizaremos la siguiente imagen para mostrarla:

Cargar y Mostrar una Imagen con OpenCV en Java jonathanmelgoza 1

Ahora crearemos nuestra clase principal de el proyecto:


public class Main {    
    public static void main(String args[]){
        System.out.println("Cargar y Mostrar una Imagen con OpenCV en Java y Netbeans");
        System.loadLibrary("opencv_java246");
        new Procesar();
    }
}

Desde aqui mandamos llamar a otra llamada Procesar:


class Procesar{
    URL img_url = getClass().getResource("/resources/paisaje.jpg");
    String ruta = img_url.getPath();
    
    public Procesar(){
        Mat imagen;
        if (ruta.startsWith("/")) {
            ruta = ruta.substring(1);
        }
        imagen = Highgui.imread(ruta,Highgui.CV_LOAD_IMAGE_COLOR);
        if(!imagen.empty()){
            Image imagenMostrar = convertir(imagen);
            int width=imagenMostrar.getWidth(null);
            int height=imagenMostrar.getHeight(null);
            Ventana ventana = new Ventana(imagenMostrar);
            ventana.setSize(width,height);
            ventana.setLocationRelativeTo(null);
            ventana.setVisible(true);
        }
    }

    private 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;
    }
}

En esta clase se realiza todo el proceso de cargar la imagen a nuestro programa y el proceso de conversion de la imagen de tipo Mat de opencv a objeto Image de AWT finalmente se envia a nuestro objeto ventana la imagen ya en formato AWT para ser mostrada.


Ventana ventana = new Ventana(imagenMostrar);

Nuestro Objeto Ventana no es mas que una clase que hereda de JFrame que solo tiene un JLabel, en el constructor recibe la imagen y la asigna al icono de esta etiqueta.


¿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


public class Ventana extends javax.swing.JFrame {

    public Ventana(Image img) {
        initComponents();
        jLabel1.setIcon(new ImageIcon(img));
    }
....
...
..
.

Ejecutamos y si todo va bien veremos el resultado final
Cargar y Mostrar una Imagen con OpenCV en Java 2



Visto – Cargar y Mostrar una Imagen con OpenCV en Java

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

49 Comentarios

      Deja un comentario

      Tu comentario será aprobado por un administrador en unos minutos, por favor no publiques de nuevo tu comentario.