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 or post in the
- 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.
- Portable Code
- 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++.
- Big/little endian agnostic
- No other packages are required to use the library. Only APIs that are
provided by an out of the box OS are needed.
- Good unit test coverage. The ratio of unit test lines of code to library lines of
code is about 1 to 5.
- 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.
- 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
- Machine Learning Algorithms
- 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
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
and HOG feature extraction algorithms.
- Tools for detecting objects in images.
- 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.
- General Utilities