Обработка изображений в Java — изменение ориентации изображения
Предпосылки:
- Обработка изображений в Java — чтение и запись
- Обработка изображений в Java — получение и установка пикселей
- Обработка изображений в Java — преобразование цветного изображения в изображение в градациях серого
- Обработка изображений в Java — преобразование цветного изображения в негативное изображение
- Обработка изображений в Java — преобразование цветных изображений в красные, зеленые, синие
- Обработка изображений в Java — преобразование цветного изображения в изображение сепии
- Обработка изображений в Java — создание случайного пиксельного изображения
- Обработка изображений в Java — создание зеркального изображения
- Обработка изображений в Java — распознавание лиц
- Обработка изображений в Java — водяные знаки на изображении
Изменение ориентации изображения
Здесь мы будем использовать OpenCV для изменения ориентации любого входного изображения с помощью метода CORE.flip() библиотеки OpenCV . Основная идея заключается в том, что входной буферизованный объект изображения будет преобразован в матовый объект, а затем будет создан новый матовый объект, в который будут помещены исходные значения матового объекта после изменения ориентации. Для достижения вышеуказанного результата нам потребуются некоторые методы OpenCV:
- getRaster() — метод возвращает записываемый растр, который, в свою очередь, используется для получения необработанных данных из входного изображения.
- put(int row, int column, byte[] data) или get(int row, int column, byte[] data): используется для чтения/записи необработанных данных в матовый объект.
- flip(mat mat1, mat mat2, int flip_value): mat1 и mat2 соответствуют входным и выходным матовым объектам, а flip_value определяет тип ориентации. -ось), -1 (переворачивание по обеим осям).
Реализация: Пусть образец изображения будет следующим:

Пример:
Java
| // Java program to Illustrate How to Change// Orientation of an Image // Importing required classesimportjava.awt.image.BufferedImage;importjava.awt.image.DataBufferByte;importjava.io.File;importjava.io.IOException;importjavax.imageio.ImageIO;importorg.opencv.core.Core;importorg.opencv.core.CvType;importorg.opencv.core.Mat; // Main class// OrientingImagepublicclassGFG {     // Main driver method    publicstaticvoidmain(String[] args)        throwsIOException    {         // Loading methods of the opencv library        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);         // Passing the input image as path from local        // directory by creating object of File class        File input = newFile("E:\test.jpg");         // Reading image        BufferedImage image = ImageIO.read(input);         // Converting buffered image object to mat object        byte[] data = ((DataBufferByte)image.getRaster()                           .getDataBuffer())                          .getData();        Mat mat = newMat(image.getHeight(),                          image.getWidth(), CvType.CV_8UC3);        mat.put(0, 0, data);         // Creating a new mat object and        // putting the modified input mat object        // using flip() method        Mat newMat            = newMat(image.getHeight(), image.getWidth(),                      CvType.CV_8UC3);         // Fipping the image about both axis        Core.flip(mat, newMat, -1);         // Converting the newly created mat object to        // buffered image object        byte[] newData            = newbyte[newMat.rows() * newMat.cols()                       * (int)(newMat.elemSize())];        newMat.get(0, 0, newData);        BufferedImage image1 = newBufferedImage(            newMat.cols(), newMat.rows(), 5);        image1.getRaster().setDataElements(            0, 0, newMat.cols(), newMat.rows(), newData);         // Storing the output image by        // creating object of File class        File output = newFile("E:\result.jpg");        ImageIO.write(image1, "jpg", output);    }} | 
Выход:

Note: Do not scale for resolution as the output image is appended bigger to perceive better, it will be generated on IDE of same size as that of resolution and size passed of the input image.
Эта статья предоставлена Pratik Agarwal . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.