basic hsb skin detection, neon illumination
This actually might work better using a simple generative model in RGB rather than HSV.


Get a training image or several training images with some skin.
Manually select the skin pixels (e. g. by creating a binary mask)
Compute the mean and covariance of the skin tone in RGB (each should be 3-element vectors)
For an unknown pixel, compute its Mahalanobis distance from the mean, using the covariance.
Classify it as skin if the distance is less than a threshold.
Tune the threshold for best performance.


Edit:
I don't know if OpenCV has a function to compute covariance, but I can tell you how to do it yourself. Let's say you have $n$ RGB pixels.  You put them into an $n$ x 3 matrix, let's call it $P$.  Then compute $m$, which is the mean RGB vector by calculating the average of the columns.  $m$ will be a 1 x 3 vector. Subtract $m$ from every row of $P$ and call the resulting matrix $Q$.  Now to compute covariance, all you have to do is multiply $Q$ by the transpose of itself: $C = Q&#39;Q$. Make sure that $C$ is 3 x 3.

Edit2:
The values you are getting seem to be too large.  To get the maximum covariance create the following matrix:

255 255 255
 0   0   0


and compute covariance of that.  You should get a matrix where every value is approximately
32513.  So make sure that your pixel values range from 0 to 255, and make sure you copy them into floats or doubles correctly.  The Mahalanobis distance is in the units of variance, so for that the numbers should be small.  Your threshold for skin classification should probably be less than 4.