首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用cv2隔离条子?

如何用cv2隔离条子?
EN

Stack Overflow用户
提问于 2021-09-23 12:40:13
回答 1查看 92关注 0票数 0

在下面表示条形图的图像中,如何隔离没有白色填充的条形图?

我正在寻找一个解决方案,这将对任何变化的图像。您可以假设格式是相同的,但是一些特性,比如网格线/轴线上的空白,可能在不同的位置。

我已经尝试过检测这些条的各种特性,比如条形图的26x3px末端,或者是左上角和右下角。例如,在左上角使用下面这样的掩码:

代码语言:javascript
复制
bar_top_kernel: Numpy = np.array([
    [1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 0, 0, 0, 0, 0, 0, 0],
], dtype='uint8')

代码语言:javascript
复制
bar_top_kernel: Numpy = np.array([
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
], dtype='uint8')

但是根据我的尝试,我要么会被漏角,要么会出现假阳性,因为条形线的末端与网格线是如何相互作用的。

我试过先移除网格线。但是由于杆端和网格线的相互作用,我倾向于得到干扰特征检测的部分。

我开始认为,如果没有某种ML方法,这可能是不可能的,但我希望有人会发现一个聪明的技巧来实现这一点。

(请点击查看完整尺寸)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-24 15:07:14

最后我想出了一个简单的窍门:

  1. 倒置颜色。
  2. 找到并填充任何轮廓:边框宽度>条形宽度。这基本上是孤立的,

  1. ,再次找到等高线,找到质心相近的对等高线。
  2. 填充包含每对的矩形,以修复拆分。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69300208

复制
相关文章

相似问题

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