我有HSV类型的颜色,我想将它转换为BGR。它不是一个只是HSV对象的图像吗?
Hsv s = new Hsv((double)Hue, (double)Sat, (double)val);
//this is my HSV color object I need to convert it to BGR color object
答案 0 :(得分:0)
这些并不是从HSV转换为BGR的直接功能,但幸好写作并不是那么难。该功能将是这样的。
public static Color ColorFromHSV(double hue, double saturation, double value)
{
int hi = Convert.ToInt32(Math.Floor(hue / 60)) % 6;
double f = hue / 60 - Math.Floor(hue / 60);
value = value * 255;
int v = Convert.ToInt32(value);
int p = Convert.ToInt32(value * (1 - saturation));
int q = Convert.ToInt32(value * (1 - f * saturation));
int t = Convert.ToInt32(value * (1 - (1 - f) * saturation));
if (hi == 0)
return Color.FromArgb(255, v, t, p);
else if (hi == 1)
return Color.FromArgb(255, q, v, p);
else if (hi == 2)
return Color.FromArgb(255, p, v, t);
else if (hi == 3)
return Color.FromArgb(255, p, q, v);
else if (hi == 4)
return Color.FromArgb(255, t, p, v);
else
return Color.FromArgb(255, v, p, q);
}
使用wikipedia上提到的算法。
另外,这里还有另一个很好的代码示例来完成同样的工作。