Для перевода цвета из RGB в HSV воспользуйтесь следующим кодом: RGB2HSV (unsigned int &hue, unsigned char &sat, unsigned char &val, unsigned char r, unsigned char g, unsigned char b) /* * 0 <= r,g,b <= 255 - значения красного, зеленого, синего * * * Выход: * 0 <= hue <= 360 градусов - оттенок. * 0 <= sat <= 255 - Saturation - насыщенность * 0 <= val <= 255 - Value - яркость */ { double h, rc, gc, bc, dmax; unsigned char s, v; unsigned char minc, maxc; maxc = (r > g) ? ((r > b) ? r : b) : ((g > b)? g : b); minc = (r < g) ? ((r < b) ? r : b) : ((g < b)? g : b); s = 0; // Насыщенность if (maxc) { s = (maxc - minc) * 255 / maxc; } sat = s; val = maxc; if (!s) { // Ахроматический цвет hue = UNDEFINED_HUE; } else { // Хроматический цвет dmax = maxc - minc; rc = (maxc - r) / dmax; /* rc - удаленность */ gc = (maxc - g) / dmax; /* цвета от красного */ bc = (maxc - b) / dmax; if (r == maxc) { // Цвет между желтым и пурпурным h = bc - gc; } else if (g == maxc) { // Цвет между голубым и желтым h = 2 + rc - bc; } else { // Цвет между пурпурным и голубым h = 4 + gc - rc; } h *= 60.0; if (h < 0.0) { h += 360.0; } hue = h; if (hue == 360) { hue = 0; } } // if (!s) } // RGB 2 HSV |