【发布时间】:2012-05-07 02:57:39
【问题描述】:
我正在尝试获取图像每个像素的色调或“H”,然后更改具有特定色调的像素的颜色。我正在尝试更改色调 >= 210 和
这是我的代码:
// 'i' is the image
// 'b' is the bitmap of the image
float y;
for (int a = 0; a < i.Height; a++)
{
for (int c = 0; c < i.Width; c++)
{
y = b.GetPixel(c, a).GetHue();
if (y >= 210 && y <= 260)
{
b.SetPixel(c, a, Color.Black);
}
}
}
唯一的问题是它不会拾取任何蓝色,范围是 210 - 260。我很确定我这样做是正确的,但我一定不是,因为它不起作用。
如果你能解决这个问题,请在这里发帖,谢谢!
编辑:我在 SetPixel 上设置了一个断点,它被调用了很多次,所以现在我将检查我是否正确保存了图片。
编辑 2:我想通了!我没有保存图片。
【问题讨论】:
-
您应该使用调试器:找出未检测到哪个像素,设置断点并查看为什么它没有通过您的测试。
-
我可以对这个范围有点怀疑,至少用纯蓝色 (225) 测试一下。更可能的问题是保存结果的代码。
-
是的,照 Vlad 说的做,在
b.SetPixel(c, a, Color.Black);上设置一个断点,看看它是否会被调用。顺便说一句,x和y可能是坐标a和c和float y的更好名称,可能是float hue,更具可读性。
标签: c# image image-processing colors