【问题标题】:C# Determine If Object Is Present In An ImageC#确定图像中是否存在对象
【发布时间】:2012-08-25 06:21:17
【问题描述】:

背景:

我们计划在传送带系统上使用摄像头来计数对象。在这种特定情况下,我们不能使用传感器。我所有的对象都非常一致,并且很容易检测它们是否存在于图片中。我一直在看 Aforge 和其他一些库,看起来很容易。 This is what I want to do.

话虽如此,我确实有些担心。在过滤过程中,您必须指定要搜索的颜色。我的对象是纯色的,但我们都知道在我正在查看的特定点上可能有 100 多个不同的 rgb 值。

是否有某种方法可以搜索一系列颜色,或者查看颜色是否“喜欢”特定颜色?

这是我第一次尝试任何类型的图像处理。我还没有尝试过任何东西,即将开始,这在我开始之前就已经是一个问题了。

任何帮助将不胜感激。

【问题讨论】:

  • 在链接中的第一个代码示例中,radius 就是这样。将 RGB 颜色空间想象成一个立方体。该链接过滤掉落在由中心和半径定义的立方体中的球体内的颜色。
  • 室内的物体是否处于恒定均匀的环境中?顺便说一句,链接不错。
  • @GeorgeDuckett 是的,我现在正在阅读更多内容并开始更多地理解它。所以对我来说,看起来我可以用这个完成我想要的。
  • @Jodrell 是的,室内恒定环境。位于传送带上的轴上的东西
  • 关于您对@Jodrell 评论的回答,在这种情况下,您可以比较没有对象的图像与您正在测试的图像之间的差异。请注意其他阴影/亮度变化等。

标签: c# image-processing colors image


【解决方案1】:

除了使用 RGB 颜色模型,您可以使用 HSL 之一(Hue Saturation Light),您可以忽略饱和度和光线,只检查色调参数:

http://en.wikipedia.org/wiki/HSL_and_HSV

这是一种使用 c# 的方法(感谢how to change rgb color to hsv):

System.Drawing.Color color = System.Drawing.Color.FromArgb(red, green, blue);
float hue = color.GetHue();
float saturation = color.GetSaturation();
float lightness = color.GetBrightness();

【讨论】:

  • 非常有帮助..我认为这是我应该使用的方法。谢谢
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多