作者jason1015 (...)
看板C_Sharp
标题有关rgb转成h程式的错误
时间Sun Mar 30 16:11:29 2008
以下是我写的将rgb转成hsi的程式
--
double h, s, ii;
if (b <= g && Math.Sqrt(Math.Pow((r - g), 2) + (r - b) * (g - b))!=0)
{
h = Math.Acos((1 / 2) * (r - g + r - b) / Math.Sqrt(Math.Pow((r - g), 2) +
(r - b) * (g - b))) * 180 / Math.PI;
scbH.Value = (int)h;
lblH.Text = "H="+Convert.ToString((int)h);
}
else if (b > g && Math.Sqrt(Math.Pow((r - g), 2) + (r - b) * (g - b)) != 0)
{
h =360- Math.Acos(1 / 2 * (r - g + r - b) / Math.Sqrt(Math.Pow((r - g), 2) + (r - b) * (g - b))) * 180 / Math.PI;
scbH.Value = (int)h;
lblH.Text = "H=" + Convert.ToString((int)h);
}
if ((r + g + b) > 0)
{
s = 1 - 3 * Math.Min(Math.Min(r, g), b) / (r + g + b);
scbS.Value = (int)(s*100);
lblS.Text ="S="+ Convert.ToString((int)(s*100));
}
ii = (r+g+b)/3;
scbII.Value = (int)ii;
lblII.Text = "I="+Convert.ToString((int)ii);
--
但是我测试之後发现到h只会在90,270这两个数字跑...
不知道是怎麽回事
请大大们帮我一下>"<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.161.147.101
1F:→ Marquess:把式子中的(1/2)改为0.5....(1/2)不是double 03/31 23:08
2F:推 tomex:这样也看得懂,佩服 04/01 10:54
3F:→ jason1015:大感谢^^ 04/01 19:16
4F:推 icools:佩服 +1 XD 04/14 04:01