Обработка изображений в Java | Установите 11 (Изменение ориентации изображения)
В этой статье мы будем использовать opencv для изменения ориентации любого входного изображения с помощью метода CORE.flip () библиотеки OpenCV.
Основная идея состоит в том, что входной буферный объект изображения будет преобразован в объект mat, а затем будет создан новый объект mat, в который будут помещены исходные значения объекта mat после изменения ориентации.
For achieving the above result, we will be requiring some of the OpenCV methods:
- getRaster() – The method returns a writable raster which in turn is used to get the raw data from input image.
- put(int row, int column, byte[] data) / get(int row, int column, byte[] data) – used to read/write the raw data into a mat object.
- flip(mat mat1, mat mat2, int flip_value) – mat1 and mat2 corresponds to input and output mat objects and the flip_value decides the orientation type.flip_value can be either 0 (flipping along x-axis), 1 (flipping along y-axis), -1 (flipping along both the axis).
// Java program to illustrate orientation modification of image 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 { // loads methods of the opencv library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); // input buffered image object File input = new File( "E:\test.jpg" ); BufferedImage image = ImageIO.read(input); // converting buffered image object to mat object byte [] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); Mat mat = new Mat(image.getHeight(),image.getWidth(),CvType.CV_8UC3); mat.put( 0 , 0 , data); // creating a new mat object and putting the modified input mat object by using flip() Mat newMat = new Mat(image.getHeight(),image.getWidth(),CvType.CV_8UC3); Core.flip(mat, newMat, - 1 ); //flipping the image about both axis // converting the newly created mat object to buffered image object 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
Эта статья предоставлена Pratik Agarwal . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .