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

digital_image_processing

IMAGEN VOLTEADA

flip

SHARE
b16-rounded

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

  • soc-icon-black-dribbble
  • soc-icon-black-t
  • soc-icon-black-p
  • soc-icon-black-be
  • soc-icon-black-instagram
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario