【发布时间】: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