The Library Algorithms API Wrappers Bayesian Nets Compression Containers Graph Tools Image Processing Linear Algebra Machine Learning Metaprogramming Miscellaneous Networking Optimization Parsing Help/Info Examples: C++ Assignment_Learning Base64_Encoder Bayesian_Network Bayesian_Network_From_Disk Bayesian_Network_GUI Bridge BSP Cmd_Line_Parser Compress_Stream Config_File_Reader Custom_Trainers Directory_Navigation Empirical_Kernel_Map Face_Detection FHOG_Feature_Extraction FHOG_Object_Detection Graph_Labeling GUI HTTP_Server Image IO Socket Streams IO Streams Server Kernel_Centroid Kernel_K-Means_Clustering Kernel_Ridge_Regression Kernel_RLS_Filtering Kernel_RLS_Regression KRR_Classification Learning_to_Track Linear_Manifold_Regularizer Logger Logger_Advanced Matrix Matrix_Expressions Member_Function_Pointer Model_Selection Multiclass_Classification Multithreaded_Object Neural_Network Non-Linear Least Squares Numerical_Integration Object_Detector Object_Detector_Advanced One_Class_Classifiers Online_SVM Optimization Parallel_For_Loops Pipe Pipe_2 Quantum_Computing Queue Rank_Features Relevance_Vector_Classification Relevance_Vector_Regression Running_Stats Sequence_Labeling Sequence_Segmentation Sockets Sockstreambuf Sparse_Vectors Std_C++_Allocator Structural_Support_Vector_Machines Support_Vector_Machine Support_Vector_Regression SURF SVM-Rank Threaded_Object Threads Thread_Function Thread_Pool Timer Train_Object_Detector Using_Custom_Kernels XML_Parser Examples: Python Face_Detector Linear_Assignment_Problems Sequence_Segmenter Structural_Support_Vector_Machines SVM-Rank Train_Object_Detector FAQ Home How to compile How to contribute Index Introduction License Python API Suggested Books Current Release Change Log Release Notes Version: 18.7 |
Last Modified: Apr 09, 2014
| Dlib is a general purpose cross-platform C++ library designed using contract programming and modern C++ techniques. It is open source software and licensed under the Boost Software License. The introduction contains everything you need to know to get started using the library. However, if you have any questions, comments, or complaints feel free to email me. For updates to this project see dlib.net. ## Major Features Documentation Unlike a lot of open source projects, this one provides complete and precise documentation for every class and function. There are also debugging modes that check the documented preconditions for functions. When this is enabled it will catch the vast majority of bugs caused by calling functions incorrectly or using objects in an incorrect manner. Lots of example programs are provided I consider the documentation to be the most important part of the library. So if you find anything that isn't documented, isn't clear, or has out of date documentation, tell me and I will fix it. High Quality Portable Code Good unit test coverage. The ratio of unit test lines of code to library lines of code is about 1 to 4. The library is tested regularly on MS Windows, Linux, and Mac OS X systems. However, it should work on any POSIX system and has been used on Solaris, HPUX, and the BSDs. No other packages are required to use the library. Only APIs that are provided by an out of the box OS are needed. There is no installation or configure step needed before you can use the library. See the How to compile page for details. All operating system specific code is isolated inside the OS abstraction layers which are kept as small as possible. The rest of the library is either layered on top of the OS abstraction layers or is pure ISO standard C++. Threading The library provides a portable and simple threading API A message passing pipe for inter-thread and inter-process communication A timer object capable of generating events that are regularly spaced in time Threaded objects Threaded functions Parallel for loops A thread_pool with support for futures Networking The library provides a portable and simple TCP sockets API An object to help you make TCP based servers iostream and streambuf objects that enables TCP sockets to interoperate with the C++ iostreams library A simple HTTP server object you can use to embed a web server into your applications A message passing pipe for inter-thread and inter-process communication A tool used to implement algorithms using the Bulk Synchronous Parallel (BSP) computing model Graphical User Interfaces The library provides a portable and simple core GUI API Implemented on top of the core GUI API are numerous widgets Unlike many other GUI toolkits, the entire dlib GUI toolkit is threadsafe Numerical Algorithms A fast matrix object implemented using the expression templates technique and capable of using BLAS and LAPACK libraries when available. Numerous linear algebra and mathematical operations are defined for the matrix object such as the singular value decomposition, transpose, trig functions, etc. General purpose unconstrained non-linear optimization algorithms using the conjugate gradient, BFGS, and L-BFGS techniques Levenberg-Marquardt for solving non-linear least squares problems Box-constrained derivative-free optimization via the BOBYQA algorithm An implementation of the Optimized Cutting Plane Algorithm Several quadratic program solvers Combinatorial optimization tools for solving optimal assignment and min cut/max flow problems as well as the CKY algorithm for finding the most probable parse tree A big integer object A random number object Machine Learning Algorithms Conventional SMO based Support Vector Machines for classification and regression Reduced-rank methods for large-scale classification and regression Relevance vector machines for classification and regression General purpose multiclass classification tools A Multiclass SVM A tool for solving the optimization problem associated with structural support vector machines. Structural SVM tools for sequence labeling Structural SVM tools for solving assignment problems Structural SVM tools for object detection in images Structural SVM tools for labeling nodes in graphs A large-scale SVM-Rank implementation An online kernel RLS regression algorithm An online SVM classification algorithm Semidefinite Metric Learning An online kernelized centroid estimator/novelty detector and offline support vector one-class classification Clustering algorithms: linear or kernel k-means, Chinese Whispers, and Newman clustering. Radial Basis Function Networks Multi layer perceptrons Graphical Model Inference Algorithms Join tree algorithm for exact inference in a Bayesian network. Gibbs sampler markov chain monte carlo algorithm for approximate inference in a Bayesian network. Routines for performing MAP inference in chain-structured, Potts, or general factor graphs. Image Processing Routines for reading and writing common image formats. Automatic color space conversion between various pixel types Common image operations such as edge finding and morphological operations Implementations of the SURF, HOG, and FHOG feature extraction algorithms. Tools for detecting objects in images including a frontal face detector. Data Compression and Integrity Algorithms A CRC 32 object MD5 functions Various abstracted objects representing parts of data compression algorithms. Many forms of the PPM algorithm are included. Testing A thread safe logger object styled after the popular Java logger log4j A modular unit testing framework Various assert macros useful for testing preconditions General Utilities A type-safe object to convert between big and little endian byte orderings A command line parser with the ability to parse and validate command lines with various types of arguments and options An XML parser An object that can perform base64 conversions Many container classes Serialization support Many memory manager objects that implement different memory pooling strategies