首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从图像中的每个像素获取色调

从图像中的每个像素获取色调
EN

Stack Overflow用户
提问于 2012-04-26 19:20:28
回答 2查看 1.7K关注 0票数 0

我尝试获取图像中每个像素的色调或'H‘,然后更改具有特定色调的像素的颜色。我正在尝试更改所有具有色调>= 210和<=260的像素,这是蓝色的不同色调。

下面是我的代码:

代码语言:javascript
复制
// '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:我想通了!我不是在保存照片。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-05 03:05:56

对我来说挺管用的。在下面的代码中,我有一个名为imgViwer的带有PictureBox的窗体。然后单击a按钮,我将执行代码:

代码语言:javascript
复制
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以进行刷新。

票数 0
EN

Stack Overflow用户

发布于 2012-04-26 20:42:08

使用,LockBits方法,卢克!

或者,我认为,它最好是在图形上下文中完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10332363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档