Estimates skin tone based on an image of a person and at the same time it does a very rough segmentation of skin based on a pixel-wise classifier. If your primary goal is a nice clean segmentation, I would recommend other methods, but for the purpose of estimating skin tone it works okay.
The algorithm is based on this paper here and consists of two main steps
- Foreground and background separation using Otsu's Binarization
- Pixel-wise skin classifier based on HSV and YCrCb colorspaces
Implemented in MATLAB and OpenCV (Python)
MIT, see LICENSE.md for details