我试图获取图像中每个像素的Hue或“H”,然后更改具有特定Hue的像素的颜色。我试图改变色调> = 210和< = 260的所有像素,这是蓝色的不同色调。从图像中的每个像素获取色相
这里是我的代码:
// '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:我想通了!我没有保存图片。
你应该使用一个调试器:找出哪个像素没有被检测到,设置一个断点,看看它为什么没有通过你的测试。 – Vlad 2012-04-26 11:24:25
我可以对范围进行一些调整,至少用纯蓝色(225)来测试。更可能的问题是保存结果的代码。 – 2012-04-26 13:21:19
是的,按照弗拉德的说法,在'b.SetPixel(c,a,Color.Black)上放一个断点;'看看是否有人叫。 BTW'x'和'y'可能是坐标'a'和'c'的更好名称,'float y'可能是'float hue',更具可读性。 – weston 2012-04-26 15:27:54