summaryrefslogtreecommitdiffstats
path: root/ml/dlib/examples/hough_transform_ex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/examples/hough_transform_ex.cpp')
-rw-r--r--ml/dlib/examples/hough_transform_ex.cpp84
1 files changed, 0 insertions, 84 deletions
diff --git a/ml/dlib/examples/hough_transform_ex.cpp b/ml/dlib/examples/hough_transform_ex.cpp
deleted file mode 100644
index 1c8b9f7bd..000000000
--- a/ml/dlib/examples/hough_transform_ex.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt
-/*
-
- This is an example illustrating the use of the Hough transform tool in the
- dlib C++ Library.
-
-
- In this example we are going to draw a line on an image and then use the
- Hough transform to detect the location of the line. Moreover, we do this in
- a loop that changes the line's position slightly each iteration, which gives
- a pretty animation of the Hough transform in action.
-*/
-
-#include <dlib/gui_widgets.h>
-#include <dlib/image_transforms.h>
-
-using namespace dlib;
-
-int main()
-{
- // First let's make a 400x400 image. This will form the input to the Hough transform.
- array2d<unsigned char> img(400,400);
- // Now we make a hough_transform object. The 300 here means that the Hough transform
- // will operate on a 300x300 subwindow of its input image.
- hough_transform ht(300);
-
- image_window win, win2;
- double angle1 = 0;
- double angle2 = 0;
- while(true)
- {
- // Generate a line segment that is rotating around inside the image. The line is
- // generated based on the values in angle1 and angle2. So each iteration creates a
- // slightly different line.
- angle1 += pi/130;
- angle2 += pi/400;
- const point cent = center(get_rect(img));
- // A point 90 pixels away from the center of the image but rotated by angle1.
- const point arc = rotate_point(cent, cent + point(90,0), angle1);
- // Now make a line that goes though arc but rotate it by angle2.
- const point l = rotate_point(arc, arc + point(500,0), angle2);
- const point r = rotate_point(arc, arc - point(500,0), angle2);
-
-
- // Next, blank out the input image and then draw our line on it.
- assign_all_pixels(img, 0);
- draw_line(img, l, r, 255);
-
-
- const point offset(50,50);
- array2d<int> himg;
- // pick the window inside img on which we will run the Hough transform.
- const rectangle box = translate_rect(get_rect(ht),offset);
- // Now let's compute the hough transform for a subwindow in the image. In
- // particular, we run it on the 300x300 subwindow with an upper left corner at the
- // pixel point(50,50). The output is stored in himg.
- ht(img, box, himg);
- // Now that we have the transformed image, the Hough image pixel with the largest
- // value should indicate where the line is. So we find the coordinates of the
- // largest pixel:
- point p = max_point(mat(himg));
- // And then ask the ht object for the line segment in the original image that
- // corresponds to this point in Hough transform space.
- std::pair<point,point> line = ht.get_line(p);
-
- // Finally, let's display all these things on the screen. We copy the original
- // input image into a color image and then draw the detected line on top in red.
- array2d<rgb_pixel> temp;
- assign_image(temp, img);
- // Note that we must offset the output line to account for our offset subwindow.
- // We do this by just adding in the offset to the line endpoints.
- draw_line(temp, line.first+offset, line.second+offset, rgb_pixel(255,0,0));
- win.clear_overlay();
- win.set_image(temp);
- // Also show the subwindow we ran the Hough transform on as a green box. You will
- // see that the detected line is exactly contained within this box and also
- // overlaps the original line.
- win.add_overlay(box, rgb_pixel(0,255,0));
-
- // We can also display the Hough transform itself using the jet color scheme.
- win2.set_image(jet(himg));
- }
-}
-