1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package sample;
- /**
- * @file HoughCircles.java
- * @brief This program demonstrates circle finding with the Hough transform
- */
- import org.opencv.core.*;
- import org.opencv.core.Point;
- import org.opencv.highgui.HighGui;
- import org.opencv.imgcodecs.Imgcodecs;
- import org.opencv.imgproc.Imgproc;
- class HoughCirclesRun {
- public void run(String[] args) {
- //! [load]
- String default_file = "../../../../data/smarties.png";
- String filename = ((args.length > 0) ? args[0] : default_file);
- // Load an image
- Mat src = Imgcodecs.imread(filename, 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 "
- + default_file +"] \n");
- System.exit(-1);
- }
- //! [load]
- //! [convert_to_gray]
- Mat gray = new Mat();
- Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
- //! [convert_to_gray]
- //![reduce_noise]
- Imgproc.medianBlur(gray, gray, 5);
- //![reduce_noise]
- //! [houghcircles]
- Mat circles = new Mat();
- Imgproc.HoughCircles(gray, circles, Imgproc.HOUGH_GRADIENT, 1.0,
- (double)gray.rows()/16, // change this value to detect circles with different distances to each other
- 100.0, 30.0, 1, 30); // change the last two parameters
- // (min_radius & max_radius) to detect larger circles
- //! [houghcircles]
- //! [draw]
- for (int x = 0; x < circles.cols(); x++) {
- double[] c = circles.get(0, x);
- Point center = new Point(Math.round(c[0]), Math.round(c[1]));
- // circle center
- Imgproc.circle(src, center, 1, new Scalar(0,100,100), 3, 8, 0 );
- // circle outline
- int radius = (int) Math.round(c[2]);
- Imgproc.circle(src, center, radius, new Scalar(255,0,255), 3, 8, 0 );
- }
- //! [draw]
- //! [display]
- HighGui.imshow("detected circles", src);
- HighGui.waitKey();
- //! [display]
- System.exit(0);
- }
- }
- public class HoughCircles {
- public static void main(String[] args) {
- // Load the native library.
- System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
- new HoughCirclesRun().run(args);
- }
- }
|