/** * @file CopyMakeBorder.java * @brief Sample code that shows the functionality of copyMakeBorder */ import org.opencv.core.*; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import java.util.Random; class CopyMakeBorderRun { public void run(String[] args) { //! [variables] // Declare the variables Mat src, dst = new Mat(); int top, bottom, left, right; int borderType = Core.BORDER_CONSTANT; String window_name = "copyMakeBorder Demo"; Random rng; //! [variables] //! [load] String imageName = ((args.length > 0) ? args[0] : "../data/lena.jpg"); // Load an image src = Imgcodecs.imread(imageName, Imgcodecs.IMREAD_COLOR); // Check if image is loaded fine if( src.empty() ) { System.out.println("Error opening image!"); System.out.println("Program Arguments: [image_name -- default ../data/lena.jpg] \n"); System.exit(-1); } //! [load] // Brief how-to for this program System.out.println("\n" + "\t copyMakeBorder Demo: \n" + "\t -------------------- \n" + " ** Press 'c' to set the border to a random constant value \n" + " ** Press 'r' to set the border to be replicated \n" + " ** Press 'ESC' to exit the program \n"); //![create_window] HighGui.namedWindow( window_name, HighGui.WINDOW_AUTOSIZE ); //![create_window] //! [init_arguments] // Initialize arguments for the filter top = (int) (0.05*src.rows()); bottom = top; left = (int) (0.05*src.cols()); right = left; //! [init_arguments] while( true ) { //! [update_value] rng = new Random(); Scalar value = new Scalar( rng.nextInt(256), rng.nextInt(256), rng.nextInt(256) ); //! [update_value] //! [copymakeborder] Core.copyMakeBorder( src, dst, top, bottom, left, right, borderType, value); //! [copymakeborder] //! [display] HighGui.imshow( window_name, dst ); //! [display] //![check_keypress] char c = (char) HighGui.waitKey(500); c = Character.toLowerCase(c); if( c == 27 ) { break; } else if( c == 'c' ) { borderType = Core.BORDER_CONSTANT;} else if( c == 'r' ) { borderType = Core.BORDER_REPLICATE;} //![check_keypress] } System.exit(0); } } public class CopyMakeBorder { public static void main(String[] args) { // Load the native library. System.loadLibrary(Core.NATIVE_LIBRARY_NAME); new CopyMakeBorderRun().run(args); } }