I have seen all questions on SO for range of HSV color space for skin
But I can only figure out this
Code -
CvScalar hsv_min = cvScalar(0, 30, 60, 0);
CvScalar hsv_max = cvScalar(20, 150, 255, 0);
//range I am using is { 0,30,60,0 & 20,150,255,0 }
cvCvtColor(src, hsv_image, CV_BGR2HSV);
cvInRangeS (hsv_image, hsv_min, hsv_max, hsv_mask);
cvDilate(hsv_mask,hsv_mask,0,1);
cvErode(hsv_mask,hsv_mask,0,1);
cvSmooth( hsv_mask, hsv_mask, CV_MEDIAN);
Problem with this range ( { 0,30,60,0 & 20,150,255,0 } ) is it detects even red color and when you place your hand in red background it does not track your skin...
Please Help !!!
Basically, it's hard to have one fixed color range for skin, because even if you want to detect only your own skin, its color will actually change a lot depending on lighting conditions.
So, maybe you can use the idea of this nice scientific article from 2011:
http://www.robots.ox.ac.uk/~vgg/research/hands/
Basically, they detect face (it's easy with oepncv). Then they extract the skin color of the face (which is very specific to the persons on the image). Then they detect skin using this color. Since the color is very specific, they should have much less false detection, than what you have with your fixed color range.