Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void RGBtoHSV(unsigned char R, unsigned char G, unsigned char B, unsigned int &H, unsigned int &S, unsigned int &V) {
- double var_R = (R / 255);
- double var_G = (G / 255);
- double var_B = (B / 255);
- unsigned char var_Min = (var_R < var_G) ? ((var_R < var_B) ? var_R : var_B) : ((var_G < var_B) ? var_G : var_B);
- unsigned char var_Max = (var_R > var_G) ? ((var_R > var_B) ? var_R : var_B) : ((var_G > var_B) ? var_G : var_B);
- unsigned char del_Max = var_Max - var_Min;
- V = var_Max;
- if(del_Max == 0) {
- H = 0;
- S = 0;
- } else {
- S = del_Max / var_Max;
- double del_R = (((var_Max - var_R) / 6) + (del_Max / 2)) / del_Max;
- double del_G = (((var_Max - var_G) / 6) + (del_Max / 2)) / del_Max;
- double del_B = (((var_Max - var_B) / 6) + (del_Max / 2)) / del_Max;
- if(var_R == var_Max) H = del_B - del_G;
- else if(var_G == var_Max) H = (1 / 3) + del_R - del_B;
- else if(var_B == var_Max) H = (2 / 3) + del_G - del_R;
- if(H < 0) H += 1;
- if(H > 1) H -= 1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement