【问题标题】:Thresholding image in range of a specific color对特定颜色范围内的图像进行阈值处理
【发布时间】:2016-03-03 13:53:19
【问题描述】:

我有一张图片:

我想为棋子创建一个二进制掩码并将背景设置为黑色。我知道我必须使用inRange() 函数然后使用Bitwise 操作,但我不知道如何获取此图像中棋子的颜色范围。

已编辑

这些更多示例:

【问题讨论】:

  • compute/draw HSV histogram 这应该可以让您了解颜色范围......有时也更好地使用背景颜色而不是对象(使用更稳定的颜色/结果...... .)
  • 如果你裁剪出尽可能大的纯背景区域(棋盘)并得到平均 HSV 值,然后裁剪出尽可能大的没有任何棋盘的棋子(士兵)区域并再次得到该区域的平均 HSV,您会看到这两者很容易通过使用 Hue 组件来区分,而它们在 RGB 颜色空间中很难区分。
  • 你能再发几张图片吗?在发布答案之前,我想在更多图片上测试我的提议。
  • @Miki 我在上次编辑时做过
  • 好的,谢谢。好吧,您的图像非常不同:1)背景颜色不是单个棋盘格,2)棋子有不同的颜色,照明 3)棋子可能有一些像素具有相同的背景颜色。最重要的是,您将无法使用简单的inRange 来分割作品。

标签: c++ opencv image-processing image-segmentation


【解决方案1】:

有些应用程序可以提供特定颜色的 hsv 值,例如 http://www.colorpicker.com/。 您可以以此为起点,然后继续使用老式的试错法,以获得完美的过滤器。下面的教程结合了 inrage 函数和轨迹栏。这允许动态更改 inrage 过滤器,从而更容易找到所需的阈值。

http://opencv-srf.blogspot.co.uk/2010/09/object-detection-using-color-seperation.html

【讨论】:

    猜你喜欢
    • 2017-08-11
    • 2013-05-19
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    相关资源
    最近更新 更多