有關rgb轉成h程式的錯誤
以下是我寫的將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
→
03/31 23:08, , 1F
03/31 23:08, 1F
推
04/01 10:54, , 2F
04/01 10:54, 2F
→
04/01 19:16, , 3F
04/01 19:16, 3F
推
04/14 04:01, , 4F
04/14 04:01, 4F