Procesamiento digital de imagenes Java DIP - Conversión de forma de imagen medianre Opencv

Java DIP - Conversión de forma de imagen 


La forma de la imagen se puede cambiar fácilmente usando OpenCV. La imagen puede voltearse, escalarse o girar en cualquiera de las cuatro direcciones.
Para cambiar la forma de la imagen, leemos la imagen y la convertimos en objeto Mat. Su sintaxis se da a continuación:
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);
//convert Buffered Image to Mat.

Volteando una imagen

OpenCV permite tres tipos de códigos de inversión que se describen a continuación:
No Señor.Código Flip
1
0
0 significa, volteando alrededor del eje x.
2
1
1 significa, volteando alrededor del eje y.
3
-1
-1 significa, dando la vuelta a ambos ejes.
Pasamos el código flip apropiado en el método flip () en la clase Core . Su sintaxis se da a continuación:
Core.flip(source mat, destination mat1, flip_code);
El método flip () toma tres parámetros: la matriz de la imagen de origen, la matriz de la imagen de destino y el código flip.
Además del método flip, hay otros métodos proporcionados por la clase Core.Se describen brevemente:
No Señor.Métodos
1
agregar (Mat src1, Mat src2, Mat dst)
Calcula la suma por elemento de dos matrices o una matriz y un escalar.
2
bitwise_and (Mat src1, Mat src2, Mat dst)
Calcula la conjunción bit-wise por elemento de dos matrices o una matriz y un escalar.
3
bitwise_not (Mat src, Mat dst)
Invierte cada bit de una matriz.
4
círculo (Mat img, centro del punto, radio interno, color escalar)
Dibuja un circulo
5
sumElems (Mat src)
Desenfoca una imagen usando un filtro gaussiano.
6
restar (Mat src1, Scalar src2, Mat dst, Mat mask)
Calcula la diferencia por elemento entre dos matrices o matriz y un escalar.

Ejemplo

El siguiente ejemplo demuestra el uso de la clase Core para voltear una imagen:
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

import java.io.File;
import javax.imageio.ImageIO;

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

import org.opencv.imgproc.Imgproc;

public class Main {
   public static void main( String[] args ) {
   
      try {
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         File input = new File("digital_image_processing.jpg");
         BufferedImage image = ImageIO.read(input); 

         byte[] data = ((DataBufferByte) image.getRaster().  getDataBuffer()).getData();
         Mat mat = new Mat(image.getHeight(),image.getWidth(),CvType.CV_8UC3);
         mat.put(0, 0, data);

         Mat mat1 = new Mat(image.getHeight(),image.getWidth(),CvType.CV_8UC3);
         Core.flip(mat, mat1, -1);

         byte[] data1 = new byte[mat1.rows()*mat1.cols()*(int)(mat1.elemSize())];
         mat1.get(0, 0, data1);
         BufferedImage image1 = new BufferedImage(mat1.cols(), mat1.rows(), 5);
         image1.getRaster().setDataElements(0,0,mat1.cols(),mat1.rows(),data1);

         File ouptut = new File("hsv.jpg");
         ImageIO.write(image1, "jpg", ouptut);
         
      } catch (Exception e) {
         System.out.println("Error: " + e.getMessage());
      }
   }
}

Salida

Cuando ejecutas el ejemplo anterior, voltea un nombre de imagen digital_image_processing.jpg a su imagen de espacio de color HSV equivalente y lo escribe en el disco duro con el nombre flip.jpg .

IMAGEN ORIGINAL

Tutorial de Conversión de Forma de Imagen

IMAGEN VOLTEADA

Tutorial de Conversión de Forma de Imagen

SHARE

Oscar perez

Arquitecto especialista en gestion de proyectos si necesitas desarrollar algun proyecto en Bogota contactame en el 3006825874 o visita mi pagina en www.arquitectobogota.tk

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario