首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何可靠地在图像上找到复选框(使用cv2.findContos或其他技术)?

如何可靠地在图像上找到复选框(使用cv2.findContos或其他技术)?
EN

Stack Overflow用户
提问于 2018-10-28 08:53:05
回答 1查看 199关注 0票数 2

我试着识别这张图片上的六个方格:

检测检查或黑色(在这里(1,1)和(3,2))。

  • 周围可以有一些文本,也可以有一些绘图,但是没有任何与复选框类似的内容。
  • 图像可以稍微旋转。

方法1

我试过:

代码语言:javascript
代码运行次数:0
运行
复制
_, contours, hierarchy = cv2.findContours(gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for j, c in enumerate(contours):
    cv2.drawContours(imgcolor, [c], 0, COLORS[j % len(COLORS)], thickness=1)

但结果相当糟糕:

到目前为止我尝试过的是:

  • cv2.contourArea(c)按面积过滤
  • 使用 形状=cv2.proxPolyDP(c,0.05 * cv2.arcLength(c,True),closed=True) 只保留if len(shape) == 4:的矩形,但这是行不通的,因为其中一些方块被分割成两到三个等高线:见右上角,它被识别为红色+青色轮廓。
  • 注:一些方块被轮廓成功地识别出来,但即使是被两个等高线识别,所以当我们drawContour时,我们看到了在同一方格上的2等高线。

方法2

是否可以在原始图像与这个"3x2框模式“的所有”位置移位+旋转+重新标度“版本之间使用相关性

这会让我们有一个好的发现吗?

TL;DR:

如何可靠地识别该图像上的6个框并找到选中或黑色的框?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-28 10:00:50

以下是我的方法:

(1)阈值和外部轮廓的求取 (2)按面积和高度/宽度对等高线进行滤波,然后根据所占面积进行区分。

这是我的结果:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53029817

复制
相关文章

相似问题

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