从图像中的每个像素获取色相
本文关键字:像素 获取 图像 | 更新日期: 2023-09-27 18:32:29
我正在尝试获取图像每个像素的色相或"H",然后更改具有特定色相的像素的颜色。我正在尝试更改所有色调为>= 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:我想通了!我没有保存图片。
它
对我有用。在下面的代码中,我有一个带有PictureBox的Windows窗体,称为imgViwer。然后单击 a 按钮我执行代码:
private void HueFilter()
{
float y;
Bitmap i = (Bitmap)imgViwer.Image;
for (int a = 0; a < i.Height; a++)
{
for (int c = 0; c < i.Width; c++)
{
y = i.GetPixel(c, a).GetHue();
if (y >= 210 && y <= 260)
{
i.SetPixel(c, a, Color.Black);
}
}
}
imgViwer.Image = i;
}
在您的情况下,您有一个名为 b 的输出图像,应将其分配回 PictureBox 以进行刷新。
使用,LockBits 方法,Luke!
或者,我认为,最好使用图形上下文来完成。