Учись программированию на C++ Builder бесплатно!

Чтобы перевести цвет из RGB в HSV воспользуйтесь следующим кодом:

RGB2HSV(unsigned int &hue, unsigned char &sat, unsigned char &val, unsigned char r, unsigned char g, unsigned char b)
{
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;
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;
}
}
}

Поиск по сайту