w-l*_*-ll 8 .net c# image colors system.drawing.color
我的所有方法都以各种方式让我失望.不同的灯光也会把它搞得一团糟.
有没有人试图返回一个rgb值的名称?"红色""绿色""蓝色"足以满足我今天的需求.
我对网络摄像头的图像进行了不安全的字节处理.
![]()
如果你有一个带名字的已知颜色列表,你可以看到给定目标颜色中哪些已知颜色"最接近",使用沿着(F#代码)行的"接近"功能:
let Diff (c1:Color) (c2:Color) =
let dr = (c1.R - c2.R) |> int
let dg = (c1.G - c2.G) |> int
let db = (c1.B - c2.B) |> int
dr*dr + dg*dg + db*db
Run Code Online (Sandbox Code Playgroud)
无论哪种已知颜色与您想要命名的目标颜色具有最小差异,请使用该名称.
嗯,通过检查很容易识别红/绿/蓝;您需要支持什么范围的价值观?
问题是,除非你从一种命名的颜色开始,否则很难回到一种颜色;IsNamedColor即使您通过 FromArgb 创建明显的颜色,也会返回 false。
如果您只需要实际预期的标准颜色,您可以通过反射枚举已知的颜色吗?
Color test = Color.FromArgb(255,0,0);
Color known = (
from prop in typeof(Color)
.GetProperties(BindingFlags.Public | BindingFlags.Static)
where prop.PropertyType == typeof(Color)
let color = (Color)prop.GetValue(null, null)
where color.A == test.A && color.R == test.R
&& color.G == test.G && color.B == test.B
select color)
.FirstOrDefault();
Console.WriteLine(known.Name);
Run Code Online (Sandbox Code Playgroud)
您还可以使用此方法作为更复杂算法的已知颜色来源。
| 归档时间: |
|
| 查看次数: |
6869 次 |
| 最近记录: |