作者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
→ Marquess:把式子中的(1/2)改為0.5....(1/2)不是double 03/31 23:08
推 tomex:這樣也看得懂,佩服 04/01 10:54
→ jason1015:大感謝^^ 04/01 19:16
推 icools:佩服 +1 XD 04/14 04:01