You can add a border to a given image using the copyMakeBorder() method which accepts the following parameters -
two representing the source image and the target image Mat object.
Mat class object representing the target (output) image.
An integer variable indicating the type of border to use.
import java.awt.Image; import java.awt.image.BufferedImage; import java.io.IOException; import javafx.application.Application; import javafx.embed.swing.SwingFXUtils; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; import javafx.stage.Stage; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; public class AddingBorders extends Application { public void start(Stage stage) throws IOException { //Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); String file ="D:\Images\cat.jpg"; Mat src = Imgcodecs.imread(file); //Creating an empty matrices to store the destination image. Mat dst = new Mat(src.rows(), src.cols(), src.type()); //Adding borders Core.copyMakeBorder(src, dst, 20, 20, 20, 20, Core.BORDER_CONSTANT); //Converting matrix to JavaFX writable image Image img = HighGui.toBufferedImage(dst); WritableImage writableImage= SwingFXUtils.toFXImage((BufferedImage) img, null); //Setting the image view ImageView imageView = new ImageView(writableImage); imageView.setX(10); imageView.setY(10); imageView.setFitWidth(575); imageView.setPreserveRatio(true); //Setting the Scene object Group root = new Group(imageView); Scene scene = new Scene(root, 595, 400); stage.setTitle("Adding Borders"); stage.setScene(scene); stage.show(); } public static void main(String args[]) { launch(args); } }
When executed, the above program generates the following window-
The above is the detailed content of How to add borders to images using Java OpenCV library?. For more information, please follow other related articles on the PHP Chinese website!