Рубрики

Обработка изображений на Java | Установите 11 (изменение ориентации изображения)

В этой статье мы будем использовать opencv для изменения ориентации любого входного изображения с помощью метода CORE.flip () библиотеки OpenCV.

Основная идея заключается в том, что входной буферизованный объект изображения будет преобразован в объект мата, а затем будет создан новый объект мата, в который после изменения ориентации помещаются исходные значения объекта мата.

Для достижения вышеуказанного результата нам потребуются некоторые методы OpenCV:

  • getRaster () — метод возвращает доступный для записи растр, который, в свою очередь, используется для получения необработанных данных из входного изображения.
  • put (int row, int column, byte [] data) / get (int row, int column, byte [] data) — используется для чтения / записи необработанных данных в объект mat.
  • flip (mat mat1, mat mat2, int flip_value) — mat1 и mat2 соответствуют входным и выходным объектам mat, а flip_value решает, что тип ориентации.flip_value может быть либо 0 (листать по оси x), 1 (листать по оси y ), -1 (листание вдоль оси).

// Java-программа для иллюстрации изменения ориентации изображения

import java.awt.image.BufferedImage;

import java.awt.image.DataBufferByte;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import org.opencv.core.Core;

import org.opencv.core.CvType;

import org.opencv.core.Mat;

  

public class OrientingImage

{

  public static void main( String[] args ) throws IOException

  {

    // загружает методы библиотеки opencv

    System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

  

    // ввод буферизованного объекта изображения

    File input = new File("E:\\test.jpg");

    BufferedImage image = ImageIO.read(input);

  

    // преобразование буферизованного объекта изображения в объект mat

    byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();

    Mat mat = new Mat(image.getHeight(),image.getWidth(),CvType.CV_8UC3);

    mat.put(0, 0, data);

  

    // создаем новый объект mat и помещаем модифицированный входной объект mat с помощью flip ()

    Mat newMat = new Mat(image.getHeight(),image.getWidth(),CvType.CV_8UC3);

    Core.flip(mat, newMat, -1);  // переворачиваем изображение вокруг обеих осей

  

    // преобразование вновь созданного объекта mat в буферизованный объект изображения

    byte[] newData = new byte[newMat.rows()*newMat.cols()*(int)(newMat.elemSize())];

    newMat.get(0, 0, newData);

    BufferedImage image1 = new BufferedImage(newMat.cols(), newMat.rows(), 5);

    image1.getRaster().setDataElements(0,0,newMat.cols(),newMat.rows(),newData);

  

    File ouptut = new File("E:\\result.jpg");

    ImageIO.write(image1, "jpg", ouptut);

  }

}

Выход:


test.jpg


result.jpg

Эта статья предоставлена Пратиком Агарвалом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Обработка изображений на Java | Установите 11 (изменение ориентации изображения)

0.00 (0%) 0 votes