【发布时间】:2019-08-28 22:03:15
【问题描述】:
我想使用 OpenCV 来检测图像中哪些矩形的大部分像素接近给定颜色。
这是一个图像示例,我想使用它来识别主要包含灰色像素(可能是道路)的矩形区域:
更准确地说,给定:
- 尺寸h x w(候选矩形的高度和重量)
- 颜色的距离函数dist(例如,颜色向量之间的向量差范数,可以是RGB或任何其他表示)
- 一个颜色向量C
- 颜色距离C的最大距离d
- 给定矩形中像素的最小百分比 r 与感兴趣的矩形 C 的距离 d 以内,
如果大小为 h x w 的矩形,则返回一个掩码 M,其中每个像素 P 为 1当用 P 测量时,左角由 P 包含至少 r % 的像素在距离 C 的距离 d 内em>dist.
在伪代码中,掩码中的像素 P 为 1 当且仅当:
def rectangle_left_cornered_at_P_is_of_interest(P):
n_pixels_near_C = size([P' for P' in rectangle(P, P + (h,w)) if dist(P',C) < d])
return n_pixels_near_C / (h * w) > r
我想在 OpenCV 中可能已经存在一个过滤器/内核可以做到这一点(或可以用来做到这一点),但我仍在学习它并且无法通过查看文档来识别它。有这种事吗?
【问题讨论】:
-
这是一个非常广泛的问题。你试过什么?它不起作用怎么办?您对颜色之间的“距离”的定义是什么?你在什么色彩空间工作,RGB,HSV等?发布一些代码,我们也许可以提供帮助。
-
谢谢。我还没有尝试过任何东西。这就是重点:我试图找出 OpenCV 在这方面提供了什么,所以我可以尝试一些东西。我现在以更完整和更精确的数学方式定义了这个问题。
-
你能提供一个示例图像吗?
-
@Andy_101,我刚刚添加了一个示例图像。谢谢。