diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
commit | be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 (patch) | |
tree | 9754ff1ca740f6346cf8483ec915d4054bc5da2d /ml/dlib/examples/surf_ex.cpp | |
parent | Initial commit. (diff) | |
download | netdata-upstream.tar.xz netdata-upstream.zip |
Adding upstream version 1.44.3.upstream/1.44.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ml/dlib/examples/surf_ex.cpp')
-rw-r--r-- | ml/dlib/examples/surf_ex.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/ml/dlib/examples/surf_ex.cpp b/ml/dlib/examples/surf_ex.cpp new file mode 100644 index 00000000..70fe1900 --- /dev/null +++ b/ml/dlib/examples/surf_ex.cpp @@ -0,0 +1,82 @@ +// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt +/* + + This is a simple example illustrating the use of the get_surf_points() function. It + pulls out SURF points from an input image and displays them on the screen as an overlay + on the image. + + For a description of the SURF algorithm you should consult the following papers: + This is the original paper which introduced the algorithm: + SURF: Speeded Up Robust Features + By Herbert Bay, Tinne Tuytelaars, and Luc Van Gool + + This paper provides a nice detailed overview of how the algorithm works: + Notes on the OpenSURF Library by Christopher Evans + +*/ + + + +#include <dlib/image_keypoint/draw_surf_points.h> +#include <dlib/image_io.h> +#include <dlib/image_keypoint.h> +#include <fstream> + + +using namespace std; +using namespace dlib; + +// ---------------------------------------------------------------------------- + +int main(int argc, char** argv) +{ + try + { + // make sure the user entered an argument to this program + if (argc != 2) + { + cout << "error, you have to enter a BMP file as an argument to this program" << endl; + return 1; + } + + // Here we declare an image object that can store rgb_pixels. Note that in dlib + // there is no explicit image object, just a 2D array and various pixel types. + array2d<rgb_pixel> img; + + // Now load the image file into our image. If something is wrong then load_image() + // will throw an exception. Also, if you linked with libpng and libjpeg then + // load_image() can load PNG and JPEG files in addition to BMP files. + load_image(img, argv[1]); + + // Get SURF points from the image. Note that get_surf_points() has some optional + // arguments that allow you to control the number of points you get back. Here we + // simply take the default. + std::vector<surf_point> sp = get_surf_points(img); + cout << "number of SURF points found: "<< sp.size() << endl; + + if (sp.size() > 0) + { + // A surf_point object contains a lot of information describing each point. + // The most important fields are shown below: + cout << "center of first SURF point: "<< sp[0].p.center << endl; + cout << "pyramid scale: " << sp[0].p.scale << endl; + cout << "SURF descriptor: \n" << sp[0].des << endl; + } + + // Create a window to display the input image and the SURF points. (Note that + // you can zoom into the window by holding CTRL and scrolling the mouse wheel) + image_window my_window(img); + draw_surf_points(my_window, sp); + + // wait until the user closes the window before we let the program + // terminate. + my_window.wait_until_closed(); + } + catch (exception& e) + { + cout << "exception thrown: " << e.what() << endl; + } +} + +// ---------------------------------------------------------------------------- + |