private static void Main(string[] args) { try { var x = new List <string>(); x.Add(@"C:\Users\Chris\Desktop\test3\crops\chris\40559.bmp"); args = x.ToArray(); // make sure the user entered an argument to this program if (args.Length != 1) { Console.WriteLine("error, you have to enter a BMP file as an argument to this program"); return; } // 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 <RgbPixel> 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. using (img = Dlib.LoadImage <RgbPixel>(args[0])) { // 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. var sp = Dlib.GetSurfPoints(img).ToArray(); Console.WriteLine($"number of SURF points found: {sp.Length}"); if (sp.Length > 0) { // A surf_point object contains a lot of information describing each point. // The most important fields are shown below: Console.WriteLine($"center of first SURF point: {sp[0].P.Center}"); Console.WriteLine($"pyramid scale: {sp[0].P.Scale}"); Console.WriteLine($"SURF descriptor: \n{sp[0].Des}"); } // 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) using (var myWindow = new ImageWindow(img)) { Dlib.DrawSurfPoints(myWindow, sp); // wait until the user closes the window before we let the program // terminate. myWindow.WaitUntilClosed(); } foreach (var surfPoint in sp) { surfPoint?.Dispose(); } } } catch (Exception e) { Console.WriteLine($"exception thrown: {e}"); } }