123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import org.opencv.core.*;
- import org.opencv.highgui.HighGui;
- import org.opencv.imgcodecs.Imgcodecs;
- import org.opencv.imgproc.Imgproc;
- class SmoothingRun {
- /// Global Variables
- int DELAY_CAPTION = 1500;
- int DELAY_BLUR = 100;
- int MAX_KERNEL_LENGTH = 31;
- Mat src = new Mat(), dst = new Mat();
- String windowName = "Filter Demo 1";
- public void run(String[] args) {
- String filename = ((args.length > 0) ? args[0] : "../data/lena.jpg");
- src = Imgcodecs.imread(filename, Imgcodecs.IMREAD_COLOR);
- if( src.empty() ) {
- System.out.println("Error opening image");
- System.out.println("Usage: ./Smoothing [image_name -- default ../data/lena.jpg] \n");
- System.exit(-1);
- }
- if( displayCaption( "Original Image" ) != 0 ) { System.exit(0); }
- dst = src.clone();
- if( displayDst( DELAY_CAPTION ) != 0 ) { System.exit(0); }
- /// Applying Homogeneous blur
- if( displayCaption( "Homogeneous Blur" ) != 0 ) { System.exit(0); }
- //! [blur]
- for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) {
- Imgproc.blur(src, dst, new Size(i, i), new Point(-1, -1));
- displayDst(DELAY_BLUR);
- }
- //! [blur]
- /// Applying Gaussian blur
- if( displayCaption( "Gaussian Blur" ) != 0 ) { System.exit(0); }
- //! [gaussianblur]
- for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) {
- Imgproc.GaussianBlur(src, dst, new Size(i, i), 0, 0);
- displayDst(DELAY_BLUR);
- }
- //! [gaussianblur]
- /// Applying Median blur
- if( displayCaption( "Median Blur" ) != 0 ) { System.exit(0); }
- //! [medianblur]
- for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) {
- Imgproc.medianBlur(src, dst, i);
- displayDst(DELAY_BLUR);
- }
- //! [medianblur]
- /// Applying Bilateral Filter
- if( displayCaption( "Bilateral Blur" ) != 0 ) { System.exit(0); }
- //![bilateralfilter]
- for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) {
- Imgproc.bilateralFilter(src, dst, i, i * 2, i / 2);
- displayDst(DELAY_BLUR);
- }
- //![bilateralfilter]
- /// Done
- displayCaption( "Done!" );
- System.exit(0);
- }
- int displayCaption(String caption) {
- dst = Mat.zeros(src.size(), src.type());
- Imgproc.putText(dst, caption,
- new Point(src.cols() / 4, src.rows() / 2),
- Imgproc.FONT_HERSHEY_COMPLEX, 1, new Scalar(255, 255, 255));
- return displayDst(DELAY_CAPTION);
- }
- int displayDst(int delay) {
- HighGui.imshow( windowName, dst );
- int c = HighGui.waitKey( delay );
- if (c >= 0) { return -1; }
- return 0;
- }
- }
- public class Smoothing {
- public static void main(String[] args) {
- // Load the native library.
- System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
- new SmoothingRun().run(args);
- }
- }
|